Customify – A Theme Customizer Booster - Version 2.4.0

Version Description

  • Big performance enhancements related to how customization settings and configurations get loaded.
  • Fixed a nasty regression that caused customization settings saved in a option to not be loaded, causing styles to be missing.
  • Pretty important code refactoring and cleanup to make things more predictable and stable.
Download this release

Release Info

Developer pixelgrade
Plugin Icon Customify – A Theme Customizer Booster
Version 2.4.0
Comparing to
See all releases

Code changes from version 2.3.5.1 to 2.4.0

css/admin.css CHANGED
@@ -1,28 +1,38 @@
1
- .extendable_options
2
- {overflow: hidden;
 
 
 
3
 
4
- height: 0;
5
- }fieldset.group
6
- {padding-left: 20px;
 
7
 
8
- border-left: 1px solid #333;
9
- }.postbox h3.hndle
10
- {font-size: 15px;
 
11
 
12
- padding: 7px;
13
- }.postbox .row
14
- {display: inline-block;
 
 
15
 
16
- width: 100%;padding: 5px 0;
17
- }.postbox .row .field
18
- {display: inline-block;
 
 
19
 
20
- width: 100%;padding: 5px 0;
21
- }.postbox .row .group
22
- {margin-left: 5px;padding-left: 15px;
 
 
 
23
 
24
- border: 1px solid rgba(203,203,203,.2);background-color: rgba(203,203,203,.2);
25
- }.postbox .uninstall_area
26
- {
27
- margin-top: 15px;
28
  }
1
+ /* This stylesheet is used to style the admin option form of the plugin. */
2
+ .extendable_options {
3
+ height: 0;
4
+ overflow: hidden;
5
+ }
6
 
7
+ fieldset.group {
8
+ border-left: 1px solid #333;
9
+ padding-left: 20px;
10
+ }
11
 
12
+ .postbox h3.hndle {
13
+ padding: 7px;
14
+ font-size: 15px;
15
+ }
16
 
17
+ .postbox .row {
18
+ width: 100%;
19
+ display: inline-block;
20
+ padding: 5px 0;
21
+ }
22
 
23
+ .postbox .row .field {
24
+ width: 100%;
25
+ display: inline-block;
26
+ padding: 5px 0;
27
+ }
28
 
29
+ .postbox .row .group {
30
+ border: 1px solid rgba(203, 203, 203, 0.2);
31
+ background-color: rgba(203, 203, 203, 0.2);
32
+ padding-left: 15px;
33
+ margin-left: 5px;
34
+ }
35
 
36
+ .postbox .uninstall_area {
37
+ margin-top: 15px;
 
 
38
  }
css/customizer.css CHANGED
@@ -1,350 +1,709 @@
1
- .sm-radio-group
2
- {font-size: 14px;font-weight: 600;line-height: 1.142em;
3
-
4
- position: relative;display: -ms-flexbox;display: flex;overflow: hidden;height: 2.428em;color: rgba(65,107,126,.7);border-radius: 999em;-ms-flex-wrap: nowrap;flex-wrap: nowrap;-ms-flex-align: stretch;align-items: stretch;-webkit-font-smoothing: antialiased;
5
- }.sm-radio-group > *
6
- {
7
- -ms-flex: 1 1 0 ;flex: 1 1 0;
8
- }.sm-radio-group:after
9
- {position: absolute;top: 0;right: 0;bottom: 0;left: 0;
10
-
11
- content: '';pointer-events: none;border: .142em solid #57abd5;border-radius: 999em;
12
- }.sm-radio-group input[type='radio']
13
- {
14
- display: none;
15
- }.sm-radio-group input[type='radio']:checked + label
16
- {color: #fff;
17
- background-color: #57abd5;
18
- }.sm-radio-group input[type='radio']:checked + label:before
19
- {position: relative;top: .285em;display: inline-block;width: .55em;height: .8em;margin-right: .45em;
20
-
21
- content: '';-webkit-transform: translateY(-50%) rotate(45deg);transform: translateY(-50%) rotate(45deg);color: inherit;border-right: 2px solid;border-bottom: 2px solid;
22
- }.sm-radio-group label
23
- {position: relative;
24
-
25
- display: -ms-flexbox ;display: flex;cursor: pointer;transition: all .25s ease;color: inherit;-ms-flex-align: center;align-items: center;-ms-flex-pack: center;justify-content: center;
26
- }.sm-radio-group label:hover
27
- {
28
- color: #416b7e;
29
- }.sm-radio-group label:nth-of-type(2)
30
- {border-right: 2px solid #57abd5;
31
- border-left: 2px solid #57abd5;
32
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group
33
- {
34
- display: -ms-flexbox ;display: flex;flex-direction: row-reverse;-ms-flex-direction: row-reverse;-ms-flex-wrap: nowrap;flex-wrap: nowrap;-ms-flex-align: stretch;align-items: stretch;-ms-flex-pack: start;justify-content: flex-start;
35
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group > *
36
- {
37
- -ms-flex: 0 0 33.33% ;flex: 0 0 33.33%;
38
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group input[type='radio']:last-of-type:checked + label
39
- {
40
- background: linear-gradient(90deg, #3daae0 0%, #d557be 100%);
41
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group input[type='radio']:nth-of-type(1):checked ~ label:last-of-type,
42
- [id='customize-control-sm_coloration_level_control'] .sm-radio-group input[type='radio']:nth-of-type(2):checked ~ label:last-of-type
43
- {
44
- margin-right: -33.33%;
45
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group label:nth-of-type(1)
46
- {
47
- -ms-flex-order: 4;order: 4;
48
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group label:nth-of-type(2)
49
- {border-right: 2px solid #57abd5;border-left: 2px solid #57abd5;
50
-
51
- -ms-flex-order: 3;order: 3;
52
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group label:nth-of-type(3)
53
- {
54
- -ms-flex-order: 2;order: 2;
55
- }[id='customize-control-sm_coloration_level_control'] .sm-radio-group label:nth-of-type(4)
56
- {border-left: 2px solid #57abd5;
57
-
58
- -ms-flex-order: 1;order: 1;
59
- }[id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize li.customize-control-sm_switch
60
- {
61
- display: -ms-flexbox !important ;display: flex !important;padding-top: 42px;padding-bottom: 42px;-ms-flex-align: center;align-items: center;-ms-flex-pack: justify;justify-content: space-between;
62
- }[id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize li.customize-control-sm_switch .customize-control-title,
63
- [id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize li.customize-control-sm_switch .separator.label
64
- {
65
- display: inline-block;
66
- }.sm-switch
67
- {font-size: 14px;font-weight: 600;line-height: 1.142em;position: relative;z-index: 10;
68
-
69
- display: -ms-flexbox;display: flex;overflow: hidden;max-width: 5.5em;height: 2.428em;color: #fff;border-radius: 999em;-ms-flex-wrap: nowrap;flex-wrap: nowrap;-ms-flex-align: stretch;align-items: stretch;-ms-flex-pack: start;justify-content: flex-start;-webkit-font-smoothing: antialiased;
70
- }.sm-switch input[type='radio']
71
- {
72
- display: none;
73
- }.sm-switch input[type='radio'] + label
74
- {
75
- display: -ms-flexbox ;display: flex;-ms-flex-align: center;align-items: center;-ms-flex: 0 0 100%;flex: 0 0 100%;
76
- }.sm-switch input[type='radio'] + label,
77
- .sm-switch input[type='radio'] + label:after
78
- {
79
- transition: all .2s ease-out;
80
- }.sm-switch input[type='radio']:checked + label
81
- {
82
- pointer-events: none;
83
- }.sm-switch input[type='radio']:nth-of-type(1) + label
84
- {
85
- padding-left: 1.214em;
86
- }.sm-switch input[type='radio']:nth-of-type(1) + label:after
87
- {position: absolute;z-index: -1;top: 0;right: 0;bottom: 0;left: 0;
88
-
89
- content: '';background-color: #57abd5;
90
- }.sm-switch input[type='radio']:nth-of-type(1):not(:checked) + label
91
- {
92
- -webkit-transform: translateX(-100%) translateX(2.125em) ;transform: translateX(-100%) translateX(2.125em);
93
- }.sm-switch input[type='radio']:nth-of-type(1):not(:checked) + label:after
94
- {-webkit-transform: translateX(100%) translateX(-2.125em) ;transform: translateX(100%) translateX(-2.125em);
95
-
96
- background: #ccc;
97
- }.sm-switch input[type='radio']:nth-of-type(1):not(:checked) + label ~ label
98
- {
99
- -webkit-transform: translateX(-100%) ;transform: translateX(-100%);
100
- }.sm-switch input[type='radio']:nth-of-type(1):checked + label ~ label
101
- {
102
- -webkit-transform: translateX(-2.4em) ;transform: translateX(-2.4em);
103
- }.sm-switch input[type='radio']:nth-of-type(1):checked + label ~ label:before
104
- {
105
- -webkit-transform: translateX(-100%) translateX(2.125em) ;transform: translateX(-100%) translateX(2.125em);
106
- }.sm-switch input[type='radio']:nth-of-type(2) + label
107
- {flex-direction: row-reverse;padding-right: 1em;
108
-
109
- -ms-flex-direction: row-reverse;
110
- }.sm-switch input[type='radio']:nth-of-type(2) + label:before
111
- {position: absolute;top: 0;right: 0;bottom: 0;left: 0;
112
-
113
- content: '';
114
- }.sm-switch input[type='radio']:nth-of-type(2) + label:after
115
- {display: block;width: 2.142em;height: 2.142em;margin-right: auto;margin-left: .125em;
116
-
117
- content: '';pointer-events: none;border-radius: 50%;background-color: #fff;box-shadow: 1px 2px 2px 0 rgba(23,21,21,.15);
118
- }.wp-full-overlay-sidebar *,
119
- .wp-full-overlay-sidebar *:before,
120
- .wp-full-overlay-sidebar *:after
121
- {
122
- box-sizing: border-box;
123
- }.iris-picker,
124
- .iris-picker *
125
- {
126
- box-sizing: content-box;
127
- }.wp-full-overlay-sidebar-content .accordion-section-content
128
- {
129
- overflow: visible;
130
- }.control-section:not(.control-section-themes) .customize-control
131
- {width: 100%;min-height: initial;
132
- padding: 0;
133
- }#customize-header-actions #customize-save-button-wrapper
134
- {
135
- margin-top: 7px;
136
- }.wp-full-overlay-footer .devices button
137
- {
138
- float: left;border-radius: 0;
139
- }.customize-controls-close
140
- {
141
- width: 48px;height: 44px;color: #7da9c3;border-top: none;border-right-color: #e0e8ef;background: #fff;
142
- }.customize-controls-close:focus,
143
- .customize-controls-close:hover
144
- {
145
- background: #f5fcff;
146
- }.customize-controls-close:before
147
- {
148
- top: 0;
149
- }#customize-controls .customize-info
150
- {
151
- border-bottom-color: #e0e8ef;
152
- }.customize-panel-back,
153
- .customize-section-back
154
- {
155
- height: 74px;color: #7da9c3;border-right-color: #e0e8ef;
156
- }.customize-panel-back:hover,
157
- .customize-panel-back:focus,
158
- .customize-section-back:hover,
159
- .customize-section-back:focus
160
- {
161
- border-left-color: #f5fcff;background: #f5fcff;
162
- }#customize-theme-controls .theme *
163
- {
164
- box-sizing: content-box;
165
- }#customize-theme-controls .accordion-section-content
166
- {
167
- padding: 17px;
168
- }#customize-theme-controls .customize-section-title
169
- {
170
- margin-top: -17px;margin-right: -17px;
171
- }#customize-theme-controls #accordion-section-add_menu
172
- {
173
- border-bottom: none;
174
- }#customize-theme-controls #accordion-section-add_menu .add-menu-toggle
175
- {
176
- float: none;
177
- }#customize-theme-controls .customize-pane-child.open
178
- {
179
- height: 100%;
180
- }#customize-controls .description
181
- {
182
- font-size: 12px;font-weight: 300;font-style: normal;line-height: 1.6;text-indent: 0;color: #4d7b90;
183
- }.customize-control-description
184
- {
185
- margin-top: 6px;
186
- }.customize-control
187
- {
188
- margin-bottom: 24px;
189
- }#accordion-section-themes + .control-section
190
- {
191
- border-top: none;
192
- }#customize-controls .panel-meta.customize-info .accordion-section-title
193
- {height: 74px;
194
-
195
- border-top: none;
196
- }.button-controls:after
197
- {display: table;clear: both;
198
-
199
- content: ' ';
200
- }.wp-core-ui .button:not(.theme-details):not(.collapse-sidebar):not(.wp-color-result),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  .wp-core-ui .button-primary,
202
- .wp-core-ui .button-secondary
203
- {font-weight: 400;
 
 
 
 
 
 
 
 
 
 
 
204
 
205
- width: auto;padding-right: 15px;padding-left: 15px;color: #f5fcff;border: none;border-radius: 4px;background: #aed2e5;box-shadow: 0 2px 0 0 #8dbed7;text-shadow: none;
206
- }.wp-core-ui .button:not(.theme-details):not(.collapse-sidebar):not(.wp-color-result):hover,
207
  .wp-core-ui .button-primary:hover,
208
- .wp-core-ui .button-secondary:hover
209
- {
210
- color: white;background: #98c6dd;box-shadow: 0 2px 0 0 #74a7c2;text-shadow: none;
211
- }.wp-core-ui #customize-header-actions .button-primary
212
- {
213
- background: #73c5ee;box-shadow: 0 2px 0 0 #57abd5;
214
- }.wp-core-ui #customize-header-actions .button-primary:hover
215
- {
216
- background: #58b0dd;box-shadow: 0 2px 0 0 #3f8aaf;
217
- }.wp-core-ui #customize-header-actions .button-primary.has-next-sibling
218
- {
219
- border-right: 1px solid #57abd5;
220
- }.wp-core-ui #customize-header-actions .button-primary:disabled
221
- {opacity: .7;
222
- color: white !important;background: #aed2e5 !important;box-shadow: 0 2px 0 0 #8db5ca !important;
223
- }.wp-core-ui #customize-header-actions .button-primary:disabled.has-next-sibling
224
- {
225
- border-right: none;
226
- }.wp-core-ui .reset_section,
227
- .wp-core-ui .reset_panel
228
- {display: block;
229
-
230
- width: 100%;height: 4em;margin: 0 0 25px;
231
- }.wp-core-ui .reset_panel
232
- {
233
- margin-top: 10px;
234
- }.separator.label
235
- {font-size: 14px;font-weight: 500;line-height: 24px;
236
-
237
- display: block;
238
- }.customize-control-title,
239
- .separator.label
240
- {
241
- color: #2a3b44;
242
- }.separator.section:before,
243
- .separator.sub-section:before
244
- {position: absolute;z-index: -1;top: 0;right: -18px;bottom: 0;left: -18px;
245
-
246
- content: '';
247
- }.separator.label
248
- {
249
- font-weight: 500;
250
- }.separator.large
251
- {font-size: 16px;
252
-
253
- margin-top: 12px;color: #39474d;
254
- }.separator.section
255
- {
256
- position: relative;margin-bottom: 0;padding: 14px 0;border: none;background: none;
257
- }.separator.section[id*='layout']
258
- {
259
- margin-top: 0;
260
- }.separator.section[id*='layout']:before
261
- {
262
- border: none;
263
- }.separator.section:before
264
- {
265
- border: 1px solid #e0e8ef;background-color: #fff;box-shadow: 0 1px 0 0 #dfe8ef;
266
- }.separator.sub-section
267
- {
268
- position: relative;padding: 12px 0;
269
- }.separator.sub-section:before
270
- {
271
- border-top: 1px solid #e0e8ef;border-bottom: 1px solid #e0e8ef;background-color: #f6fbff;
272
- }.separator.sub-section + span
273
- {font-style: normal;
274
-
275
- margin-top: 20px;
276
- }.section-navigation-wrapper
277
- {
278
- position: relative;height: 43px;margin: -15px -12px 0 -12px;margin-right: -17px;margin-left: -17px;
279
- }.section-navigation
280
- {
281
- display: -ms-flexbox ;display: flex;clear: both;margin-top: -1px;border-top: 1px solid #e0e8ef;
282
- }.section-navigation a
283
- {display: block;padding: 12px 0;transition: background-color .15s ease-in-out;text-align: center;text-decoration: none;color: #3b484e;border-right: 1px solid #e0e8ef;border-bottom: 1px solid #e0e8ef;background-color: #fff;
284
-
285
- -ms-flex: 1 1 auto;flex: 1 1 auto;
286
- }.section-navigation a:last-child
287
- {
288
- border-right: 0;
289
- }#customize-controls .customize-info.is-sticky.is-sticky,
290
- #customize-controls .customize-section-title.is-sticky.is-sticky
291
- {
292
- top: 40px;
293
- }#customize-controls .customize-info.is-in-view.is-in-view,
294
- #customize-controls .customize-section-title.is-in-view.is-in-view
295
- {
296
- box-shadow: none;
297
- }#customize-controls .has-nav .customize-info,
298
- #customize-controls .has-nav .customize-section-title
299
- {
300
- margin-right: -12px;
301
- }#customize-controls .customize-section-title.customize-section-title
302
- {
303
- border-bottom: 0;
304
- }.customize-section-description-container.section-meta.has-nav
305
- {
306
- margin-bottom: 0;
307
- }.font-options__wrapper
308
- {
309
- position: relative;
310
- }.font-options__wrapper:after
311
- {position: absolute;z-index: 0;top: 90%;right: 0;left: 0;display: block;height: 30px;
312
-
313
- content: '';
314
- }.font-options__head
315
- {
316
- display: -ms-flexbox ;display: flex;-ms-flex-pack: justify;justify-content: space-between;
317
- }.font-options__head.font-options__head
318
- {white-space: nowrap;text-overflow: ellipsis;
319
-
320
- -webkit-appearance: none;
321
- }.font-options__font-title
322
- {font-size: 12px;font-weight: 300;line-height: 20px;overflow: hidden;
323
-
324
- margin-right: 26px;margin-left: 10px;white-space: nowrap;text-overflow: ellipsis;color: #98c6dd;
325
- }.font-options__options-list
326
- {
327
- position: absolute;z-index: 2;top: calc(100% + 6px);right: -6px;left: -6px;display: block;display: none;padding: 10px;transition: opacity .15s linear;opacity: 0;border: 1px solid #dfe8ef;border-radius: 5px;background-color: #fff;
328
- }.font-options__options-list:last-child
329
- {
330
- margin-bottom: 0;
331
- }.font-options__options-list:before,
332
- .font-options__options-list:after
333
- {position: absolute;z-index: 10;top: -20px;right: 25px;width: 0;height: 0;
334
-
335
- content: '';border: solid transparent;
336
- }.font-options__options-list:before
337
- {z-index: 11;border-width: 10px;
338
- border-bottom-color: white;
339
- }.font-options__options-list:after
340
- {top: -24px;right: 23px;border-width: 12px;
341
- border-bottom-color: rgba(0,0,0,.075);
342
- }.customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap:after
343
- {position: absolute;right: 12px;bottom: 100%;width: 0;height: 0;border-collapse: separate;
344
-
345
- content: '';border-width: 0 9px 9px 9px;border-style: solid;border-color: transparent transparent #fff transparent;
346
- }.font-options__head,
347
- .wp-full-overlay-sidebar-content .customize-control input[type=text]:not(#_customize-input-wpcom_custom_css_content_width_control):not(.wp-color-picker),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
348
  .wp-full-overlay-sidebar-content .customize-control input[type=checkbox],
349
  .wp-full-overlay-sidebar-content .customize-control input[type=password],
350
  .wp-full-overlay-sidebar-content .customize-control input[type=color],
@@ -362,1345 +721,2525 @@
362
  .wp-full-overlay-sidebar-content .customize-control input[type=search],
363
  .wp-full-overlay-sidebar-content .customize-control select,
364
  .wp-full-overlay-sidebar-content .customize-control textarea,
365
- .wp-full-overlay-sidebar-content .customize-control input[type='number'].range-value,
366
- ul.font-options__options-list .select2-container .select2-selection--single,
367
- #customize-theme-controls .select2-container .select2-selection--multiple
368
- {font-size: 14px;line-height: 1.5;
369
-
370
- width: 100%;height: 44px;padding: 10px 14px;color: #416b7e;border: 2px solid #b8daeb;border-radius: 4px;outline: 0;background: #fff;
371
- }.font-options__head:focus,
372
- .wp-full-overlay-sidebar-content .customize-control input[type=text]:focus:not(#_customize-input-wpcom_custom_css_content_width_control):not(.wp-color-picker),
373
- .wp-full-overlay-sidebar-content .customize-control input[type=checkbox]:focus,
374
- .wp-full-overlay-sidebar-content .customize-control input[type=password]:focus,
375
- .wp-full-overlay-sidebar-content .customize-control input[type=color]:focus,
376
- .wp-full-overlay-sidebar-content .customize-control input[type=date]:focus,
377
- .wp-full-overlay-sidebar-content .customize-control input[type=datetime]:focus,
378
- .wp-full-overlay-sidebar-content .customize-control input[type=datetime-local]:focus,
379
- .wp-full-overlay-sidebar-content .customize-control input[type=email]:focus,
380
- .wp-full-overlay-sidebar-content .customize-control input[type=month]:focus,
381
- .wp-full-overlay-sidebar-content .customize-control input[type=number]:focus,
382
- .wp-full-overlay-sidebar-content .customize-control input[type=radio]:focus,
383
- .wp-full-overlay-sidebar-content .customize-control input[type=tel]:focus,
384
- .wp-full-overlay-sidebar-content .customize-control input[type=time]:focus,
385
- .wp-full-overlay-sidebar-content .customize-control input[type=url]:focus,
386
- .wp-full-overlay-sidebar-content .customize-control input[type=week]:focus,
387
- .wp-full-overlay-sidebar-content .customize-control input[type=search]:focus,
 
 
 
 
 
 
388
  .wp-full-overlay-sidebar-content .customize-control select:focus,
389
  .wp-full-overlay-sidebar-content .customize-control textarea:focus,
390
- .wp-full-overlay-sidebar-content .customize-control input[type='number'].range-value:focus,
391
- ul.font-options__options-list .select2-container .select2-selection--single:focus,
392
- #customize-theme-controls .select2-container .select2-selection--multiple:focus
393
- {
394
- border-color: #73c5ee;box-shadow: none;
395
- }.font-options__head,
396
- .wp-full-overlay-sidebar-content .customize-control select,
397
- ul.font-options__options-list .select2-container .select2-selection--single,
398
- #customize-theme-controls .select2-container .select2-selection--multiple
399
- {font-weight: 600;
400
-
401
- width: 100%;background: white url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE1cHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTUgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weS0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjU2LjAwMDAwMCwgLTM4Ni4wMDAwMDApIiBmaWxsPSIjOThDNkRFIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iVGl0bGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2LjAwMDAwMCwgMjE5LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1TZWxlY3QtQ29weSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU2VsZWN0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMjcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI1NC40ODEyLDE4IEwyNTYsMTkuNTE0IEwyNDguNSwyNyBMMjQxLDE5LjUxNCBMMjQyLjUxODgsMTggTDI0OC41LDIzLjk2NzIgTDI1NC40ODEyLDE4IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;background-position: right 16px top 16px;-webkit-appearance: button;-moz-appearance: none;
402
- }[multiple].font-options__head,
403
- .wp-full-overlay-sidebar-content .customize-control select[multiple],
404
- ul.font-options__options-list .select2-container [multiple].select2-selection--single,
405
- #customize-theme-controls .select2-container [multiple].select2-selection--multiple
406
- {
407
- background: white;
408
- }.wp-full-overlay-sidebar-content .customize-control input[type=text],
409
- .wp-full-overlay-sidebar-content .customize-control textarea
410
- {
411
- font-size: 13px;
412
- }.wp-full-overlay-sidebar-content .customize-control textarea
413
- {
414
- height: auto;
415
- }.wp-full-overlay-sidebar-content .customize-control input[type=checkbox],
416
- .wp-full-overlay-sidebar-content .customize-control input[type=radio]
417
- {
418
- width: 22px;height: 22px;
419
- }.wp-full-overlay-sidebar-content .customize-control input[type=checkbox]:checked,
420
- .wp-full-overlay-sidebar-content .customize-control input[type=radio]:checked
421
- {border-color: #5ab9e8;
422
- background: #73c5ee;
423
- }.wp-full-overlay-sidebar-content .customize-control input[type=checkbox]:checked:before,
424
- .wp-full-overlay-sidebar-content .customize-control input[type=radio]:checked:before
425
- {margin: -1px 0 0 -2px;
426
-
427
- color: white;
428
- }.wp-full-overlay-sidebar-content .customize-control .awesome_preset input[type=radio]:checked
429
- {
430
- background: transparent;
431
- }.wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control) label:not(:only-of-type),
432
- .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control) > .customize-inside-control-row:not(:only-of-type),
433
- .wp-full-overlay-sidebar-content .customize-control.customize-control-radio label:not(:only-of-type),
434
- .wp-full-overlay-sidebar-content .customize-control.customize-control-radio > .customize-inside-control-row:not(:only-of-type)
435
- {display: inline-block;width: calc(49% - 30px);
436
- margin-left: 30px;padding-top: 0;padding-bottom: 0;text-indent: -6px;
437
- }.wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control) label,
438
- .wp-full-overlay-sidebar-content .customize-control.customize-control-radio label
439
- {
440
- color: #416b7e;
441
- }[id*='divider'] + .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control),
442
- [id*='divider'] + .wp-full-overlay-sidebar-content .customize-control.customize-control-radio
443
- {
444
- margin-top: 0;
445
- }.wp-full-overlay-sidebar-content .customize-control input[type=radio]
446
- {
447
- border-radius: 50%;
448
- }.wp-full-overlay-sidebar-content .customize-control input[type=radio]:checked:before
449
- {
450
- content: none;
451
- }.customize-control-html + .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox
452
- {
453
- margin-top: -24px;
454
- }.wp-full-overlay-sidebar-content .customize-control.customize-control-radio label,
455
- .wp-full-overlay-sidebar-content .customize-control.customize-control-radio .customize-inside-control-row
456
- {
457
- margin-top: 12px;
458
- }.wp-full-overlay-sidebar-content .customize-control.customize-control-radio#customize-control-changeset_status .customize-inside-control-row
459
- {
460
- margin-top: 0;text-indent: 0;
461
- }.wp-full-overlay-sidebar-content .customize-control input[type='range']
462
- {
463
- width: 65%;
464
- }.wp-full-overlay-sidebar-content .customize-control input[type='range']
465
- {
466
- position: relative;overflow: hidden;width: calc(100% - 55px);height: 22px;outline: none;background: none;-webkit-appearance: none;
467
- }.wp-full-overlay-sidebar-content .customize-control input[type='range']:before
468
- {position: absolute;top: 8px;left: 0;width: 100%;height: 6px;
469
-
470
- content: ' ';border-radius: 10px;background: #dfe8ef;box-shadow: inset 0 1px 3px 0 rgba(0,0,0,.3);
471
- }.wp-full-overlay-sidebar-content .customize-control input[type='range']::-webkit-slider-thumb
472
- {position: relative;z-index: 3;width: 22px;height: 22px;border: 2px solid #b8daeb;border-radius: 4px;background: #27ae60;background: #fff;
473
-
474
- -webkit-appearance: none;
475
- }.wp-full-overlay-sidebar-content .customize-control input[type='range']::-webkit-slider-thumb:before
476
- {font-size: 1em;position: absolute;top: -5px;left: 5px;
477
-
478
- content: '..';letter-spacing: 1px;color: #b8daeb;
479
- }.wp-full-overlay-sidebar-content .customize-control input[type='range']::-webkit-slider-thumb:after
480
- {position: absolute;z-index: 1;top: 6px;right: 20px;width: calc(100% - 55px);height: 6px;
481
-
482
- content: ' ';background: #73c5ee;
483
- }.wp-full-overlay-sidebar-content .customize-control input[type='number'].range-value
484
- {font-size: 13px;line-height: 1;top: -5px;float: right;width: auto;
485
- min-width: 40px;max-width: 80px;height: 30px;margin-left: 10px;padding: 4px 0 5px 0;text-align: center;
486
- }.wp-full-overlay-sidebar-content .customize-control input[type=number]::-webkit-inner-spin-button,
487
- .wp-full-overlay-sidebar-content .customize-control input[type=number]::-webkit-outer-spin-button
488
- {margin: 0;
489
-
490
- -webkit-appearance: none;
491
- }.customize-control-color
492
- {
493
- display: block;
494
- }.customize-control-color .customize-control-title,
495
- .customize-control-color .separator.label
496
- {
497
- float: left;
498
- }.customize-control-color .wp-picker-container
499
- {
500
- position: relative;top: -3px;float: right;
501
- }.customize-control-color .wp-picker-container .wp-picker-holder
502
- {
503
- position: relative;
504
- }.customize-control-color .wp-picker-container .wp-color-result,
505
- .customize-control-color .wp-picker-container .wp-color-result.button
506
- {
507
- top: 0;width: 40px;height: 30px;margin: 0;padding: 0;border: 2px solid #b8daeb;border-radius: 4px;background: #2ecc71;box-shadow: none;
508
- }.customize-control-color .wp-picker-container .wp-color-result:after,
509
- .customize-control-color .wp-picker-container .wp-color-result .wp-color-result-text,
510
- .customize-control-color .wp-picker-container .wp-color-result.button:after,
511
- .customize-control-color .wp-picker-container .wp-color-result.button .wp-color-result-text
512
- {
513
- display: none;
514
- }.customize-control-color .wp-picker-container .iris-picker
515
- {
516
- position: absolute;z-index: 1000;top: 40px;right: 0;width: 275px !important;border: none;border-color: #dfdfde;border-top: none;border-radius: 0 0 3px 3px;background: white;
517
- }.customize-control-color .wp-picker-container .iris-picker,
518
- .customize-control-color .wp-picker-container .iris-picker *
519
- {
520
- box-sizing: content-box;
521
- }.customize-control-color .wp-picker-container .iris-picker .iris-square
522
- {
523
- width: 215px !important;height: 173px !important;margin-right: 0;
524
- }.customize-control-color .wp-picker-container .iris-picker .iris-strip
525
- {
526
- float: right;box-shadow: rgba(0,0,0,.4) 0 1px 1px inset;
527
- }.customize-control-color .wp-picker-container .iris-picker .iris-strip .ui-slider-handle
528
- {opacity: 1;
529
- border-color: #aaa !important;box-shadow: none;
530
- }.customize-control-color .wp-picker-container .iris-picker .iris-palette
531
- {
532
- width: 24px !important;height: 24px !important;border-radius: 50px;box-shadow: rgba(0,0,0,.4) 0 1px 1px inset;
533
- }.customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap
534
- {
535
- position: absolute;z-index: 1000;top: 35px;right: 0;width: 275px;padding: 9px 12px;border: none;border-radius: 3px 3px 0 0;background: white;
536
- }.customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.wp-color-picker
537
- {font-size: 13px;
538
-
539
- float: left;width: 100px;height: auto;margin: 0;padding: 6px 12px;text-align: left;
540
- }.customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.button
541
- {
542
- float: right;height: 30px;padding: 4px 12px;
543
- }.customize-control-font:last-child
544
- {
545
- margin-bottom: 150px;
546
- }#accordion-section-live_css_edit_section .customize-section-title
547
- {
548
- margin-top: -13px;border-bottom: 1px solid #ddd;
549
- }#accordion-section-live_css_edit_section #css_editor
550
- {
551
- top: 70px;overflow: visible;border-top: 10px solid white;
552
- }#accordion-section-live_css_edit_section #css_editor:before
553
- {position: absolute;z-index: 10000000;top: -10px;left: 0;display: block;width: 48px;height: 10px;
554
-
555
- content: '';background: #e8e8e8;
556
- }#accordion-section-live_css_edit_section .ace_scroller
557
- {
558
- padding-left: 10px;
559
- }.wp-full-overlay.editor_opened
560
- {
561
- margin-left: 500px;
562
- }.wp-full-overlay.editor_opened #customize-controls
563
- {
564
- width: 500px;
565
- }.wp-full-overlay.editor_opened.collapsed #customize-controls
566
- {
567
- width: 300px;
568
- }.customize-control-media .current,
569
- .customize-control-site_icon .current,
570
- li#customize-control-site_logo .current
571
- {min-height: 44px;
572
- margin-bottom: 10px;border: 2px solid #b8daeb;border-radius: 4px;background: #f5fcff;
573
- }.customize-control-media .current .container,
574
- .customize-control-media .current span,
575
- .customize-control-site_icon .current .container,
576
- .customize-control-site_icon .current span,
577
- li#customize-control-site_logo .current .container,
578
- li#customize-control-site_logo .current span
579
- {
580
- border: none;
581
- }.customize-control-media .inner,
582
- .customize-control-media .current span,
583
- .customize-control-site_icon .inner,
584
- .customize-control-site_icon .current span,
585
- li#customize-control-site_logo .inner,
586
- li#customize-control-site_logo .current span
587
- {
588
- font-size: 13px;color: #98c6dd;
589
- }.customize-control-media .inner,
590
- .customize-control-site_icon .inner,
591
- li#customize-control-site_logo .inner
592
- {
593
- line-height: 1.4;
594
- }.customize-control-media .thumbnail-image,
595
- .customize-control-site_icon .thumbnail-image,
596
- li#customize-control-site_logo .thumbnail-image
597
- {
598
- padding: 14px;text-align: center;
599
- }.customize-control-media .thumbnail-image img,
600
- .customize-control-site_icon .thumbnail-image img,
601
- li#customize-control-site_logo .thumbnail-image img
602
- {
603
- width: auto;
604
- }.customize-control-media .actions,
605
- .customize-control-site_icon .actions,
606
- li#customize-control-site_logo .actions
607
- {
608
- margin-bottom: 0;
609
- }.customize-control-typography select,
610
- .customize-control-typography select
611
- {
612
- margin-bottom: 10px;
613
- }.customize-control-typography .description,
614
- .customize-control-typography .description
615
- {
616
- margin-top: -3px;
617
- }.customize-control-typography ul li,
618
- .customize-control-typography ul li
619
- {
620
- width: 100%;margin: 0;
621
- }.default-preset-button
622
- {font-family: 'Open Sans',sans-serif;font-size: 13px;float: right;margin-right: 4px;padding: 1px 8px;border: 1px solid #cbcbcb;border-radius: 3px;
623
- background-color: #f5f6f6;
624
- }.customize-control-preset .description
625
- {font-style: normal;
626
-
627
- margin-right: 5px;
628
- }.customify_preset.radio_buttons .customify_radio_button
629
- {position: relative;display: inline-block;overflow: hidden;height: auto;margin: 3px;padding: 2px;
630
-
631
- border: none;
632
- }.customify_preset.radio_buttons .customify_radio_button input[type='radio']
633
- {position: absolute;z-index: 9999;width: 100%;height: 100%;
634
 
635
- opacity: 0;
636
- }.customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked + label
637
- {
638
- background-color: #ebebeb;
639
- }.customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked + label:before
640
- {
641
- content: '>';color: inherit;
642
- }.customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked + label:after
643
- {
644
- content: '<';color: inherit;
645
- }.customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked:before
646
- {
647
- opacity: 0;
648
- }.customify_preset.radio_buttons .customify_radio_button label
649
- {
650
- position: relative;z-index: 999;border-left: 4px solid;
651
- }.customify_preset .awesome_preset
652
- {position: relative;display: inline-block;
653
-
654
- width: 45%;margin-top: 5px;margin-bottom: 25px;transition: all .2s;text-align: center;color: white;
655
- }.customify_preset .awesome_preset:hover
656
- {
657
- opacity: .9;
658
- }.customify_preset .awesome_preset:before
659
- {position: absolute;z-index: 5;top: 1px;right: 1px;bottom: 1px;left: 1px;
660
-
661
- content: '';opacity: .5;border: 1px solid #fff;border-radius: 4px;background: transparent;
662
- }.customify_preset .awesome_preset .preset-wrap .preset-color
663
- {
664
- height: 128px;padding: 17px 0 27px;border-radius: 4px 4px 0 0;
665
- }.customify_preset .awesome_preset .preset-wrap .preset-color .first-font
666
- {font-size: 55px;line-height: 1;
667
-
668
- display: inline-block;width: 100%;
669
- }.customify_preset .awesome_preset .preset-wrap .preset-color .secondary-font
670
- {font-size: 20px;line-height: 1;
671
-
672
- display: inline-block;width: 100%;margin-top: 8px;
673
- }.customify_preset .awesome_preset .preset-wrap .preset-name
674
- {font-size: 11px;
675
-
676
- position: relative;padding: 1px;text-transform: UPPERCASE;border-radius: 0 0 4px 4px;
677
- }.customify_preset .awesome_preset .preset-wrap .preset-name:before
678
- {position: absolute;top: -10px;left: 40%;
679
-
680
- content: '';border: 10px solid;border-color: inherit;border-top: transparent;border-right-color: transparent;border-bottom-color: inherit;border-left-color: transparent;
681
- }.customify_preset .awesome_preset:nth-child(odd)
682
- {
683
- margin-right: 7%;
684
- }.customify_preset .awesome_preset input[type=radio]
685
- {position: absolute;z-index: 10;top: 0;left: 0;display: inline-block;width: 100%;
686
- height: 100%;margin: 0;color: #006505;border: 0;border-radius: 0;background-color: transparent;box-shadow: none;
687
- }.customify_preset .awesome_preset input[type=radio]:checked:before
688
- {
689
- position: absolute;z-index: 1;top: -13px;right: -14px;width: 25px;height: 25px;background: #fff;
690
- }.customify_preset .awesome_preset input[type=radio]:checked:after
691
- {position: absolute;z-index: 10;top: -5px;right: -5px;width: 26px;height: 26px;content: '';border-radius: 50%;background: #73c5ee url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEzcHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTMgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgLTQwOC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1DaGVja2JveC1Db3B5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNy4wMDAwMDAsIDI0OS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNoZWNrYm94IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDM4NDk1LDE2IEwxNy4xMTYxMzc1LDguOTIxNDg3NiBMMTUuMTk0NjQ5OCw3IEwxMC4wMzg0OTUsMTIuMTU1MDY3NCBMNi45MjE0ODc2LDkuMDM4OTI5OTcgTDUsMTAuOTYwNDE3NiBMMTAuMDM4NDk1LDE2IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;background-position: center center;
692
-
693
- -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=0)';filter: alpha(opacity=0);
694
- }.customify_radio_image
695
- {
696
- display: inline-block;
697
- }.customify_radio_image label
698
- {position: relative;
699
-
700
- display: block;float: left;margin-right: 10px;
701
- }.customify_radio_image label input[type=radio]
702
- {
703
- position: absolute;top: 0;right: 0;bottom: 0;left: 0;visibility: hidden;width: 100%;height: 100%;
704
- }.customify_radio_image label input[type=radio] img
705
- {
706
- cursor: pointer;border: 2px solid transparent;
707
- }.customify_radio_image label input[type=radio]:checked + img
708
- {
709
- border: 3px solid #73c5ee;
710
- }.customify_ace_editor
711
- {
712
- display: block;min-height: 200px;border: 1px solid #ddd;
713
- }.customize-control-custom_background .hide
714
- {
715
- display: none;
716
- }.customize-control-custom_background .upload_button_div
717
- {
718
- margin: 10px 0;
719
- }.customize-control-custom_background .upload_button_div > *
720
- {
721
- margin-right: 10px;
722
- }.customize-control-custom_background .preview_screenshot
723
- {margin: 10px 0;
724
-
725
- text-align: center;
726
- }.customize-control-custom_background .preview_screenshot img
727
- {
728
- border: 2px solid #ccc;
729
- }#customify_import_demo_data_button
730
- {display: inline-block;
731
-
732
- width: 70%;height: auto;margin: 0 15% 10% 15%;padding: 10px;text-align: center;
733
- }.import_step_note
734
- {display: inline-block;width: 100%;
735
- margin: 5px;
736
- }.import_step_note:before
737
- {
738
- content: '\1F449';
739
- }.import_step_note.success:before
740
- {
741
- content: '\1F44D';
742
- }.import_step_note.failed:before
743
- {
744
- content: '\274C';
745
- }#customize-header-actions
746
- {border-color: #e0e8ef;
747
- background: #fff;
748
- }.wp-full-overlay-sidebar,
749
- .customize-themes-panel,
750
- #customize-sidebar-outer-content
751
- {border-right: 1px solid #e0e8ef;
752
- background: #f7f9fa;
753
- }.outer-section-open #customize-controls .wp-full-overlay-sidebar-content,
754
- .attachment-media-view,
755
- .media-widget-preview.media_audio,
756
- .media-widget-preview.media_image
757
- {
758
- background: #f7f9fa;
759
- }#customize-theme-controls #accordion-section-menu_locations
760
- {
761
- border-bottom: 1px solid #e0e8ef;
762
- }#customize-controls #accordion-section-themes > .accordion-section-title
763
- {
764
- font-weight: 600;border-bottom: 1px solid #e0e8ef;
765
- }#customize-controls #accordion-section-themes > .accordion-section-title:hover
766
- {
767
- background: #fff;
768
- }#customize-controls .panel-meta.customize-info
769
- {
770
- border-bottom-color: #e0e8ef;
771
- }#customize-theme-controls .control-section .accordion-section-title
772
- {
773
- font-weight: 400;border-top: 1px solid #e0e8ef;border-bottom: none;
774
- }#customize-theme-controls .control-section:last-of-type > .accordion-section-title
775
- {
776
- border-bottom: 1px solid #e0e8ef;
777
- }#customize-theme-controls .customize-section-title
778
- {
779
- border-top: 1px solid #e0e8ef;border-bottom: 1px solid #e0e8ef;
780
- }#customize-controls .control-section .accordion-section-title:focus,
781
- #customize-controls .control-section .accordion-section-title:hover,
782
- #customize-controls .control-section.open .accordion-section-title,
783
- #customize-controls .control-section:hover > .accordion-section-title
784
- {
785
- color: #056184;border-left-color: #f5fcff;background: #f5fcff;
786
- }.wp-customizer .menu-item-edit-active .menu-item-handle,
787
- .wp-customizer .section-open .menu-item-settings,
788
- .wp-customizer .menu-item-bar .menu-item-handle:hover
789
- {
790
- border-color: #e0e8ef;
791
- }.wp-customizer .section-open .menu-item-settings
792
- {
793
- background: #f5fcff;
794
- }.wp-customizer .control-section-nav_menu .menu-location-settings
795
- {
796
- border-top-color: #e0e8ef !important;
797
- }[data-balloon]
798
- {
799
- position: relative;
800
- }[data-balloon]::before
801
- {font-size: 12px;position: absolute;z-index: 10;padding: .5em 1em;content: attr(data-balloon);transition: all .18s ease-out;white-space: nowrap;pointer-events: none;
802
-
803
- opacity: 0;color: #fff;border-radius: 4px;background: rgba(17,17,17,.9);
804
- }[data-balloon]::after
805
- {position: absolute;z-index: 10;width: 18px;height: 6px;content: '';transition: all .18s ease-out;pointer-events: none;opacity: 0;
806
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(0)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');background-size: 100% auto;
807
- }[data-balloon]:hover::before,
808
- [data-balloon]:hover::after
809
- {pointer-events: auto;
810
 
811
- opacity: 1;
812
- }[data-balloon][data-balloon-pos='up']::before
813
- {
814
- bottom: 100%;left: 50%;margin-bottom: 11px;-webkit-transform: translate3d(-50%, 10px, 0);transform: translate3d(-50%, 10px, 0);-webkit-transform-origin: top;transform-origin: top;
815
- }[data-balloon][data-balloon-pos='up']::after
816
- {
817
- bottom: 100%;left: 50%;margin-bottom: 5px;-webkit-transform: translate3d(-50%, 10px, 0);transform: translate3d(-50%, 10px, 0);-webkit-transform-origin: top;transform-origin: top;
818
- }[data-balloon][data-balloon-pos='up']:hover::before
819
- {
820
- -webkit-transform: translate3d(-50%, 0, 0) ;transform: translate3d(-50%, 0, 0);
821
- }[data-balloon][data-balloon-pos='up']:hover::after
822
- {
823
- -webkit-transform: translate3d(-50%, 0, 0) ;transform: translate3d(-50%, 0, 0);
824
- }[data-balloon][data-balloon-pos='down']::before
825
- {top: 100%;
826
- left: 50%;margin-top: 11px;-webkit-transform: translate3d(-50%, -10px, 0);transform: translate3d(-50%, -10px, 0);
827
- }[data-balloon][data-balloon-pos='down']::after
828
- {top: 100%;left: 50%;width: 18px;height: 6px;margin-top: 5px;-webkit-transform: translate3d(-50%, -10px, 0);transform: translate3d(-50%, -10px, 0);
829
-
830
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(180 18 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');background-size: 100% auto;
831
- }[data-balloon][data-balloon-pos='down']:hover::before
832
- {
833
- -webkit-transform: translate3d(-50%, 0, 0) ;transform: translate3d(-50%, 0, 0);
834
- }[data-balloon][data-balloon-pos='down']:hover::after
835
- {
836
- -webkit-transform: translate3d(-50%, 0, 0) ;transform: translate3d(-50%, 0, 0);
837
- }[data-balloon][data-balloon-pos='left']::before
838
- {top: 50%;right: 100%;
839
-
840
- margin-right: 11px;-webkit-transform: translate3d(10px, -50%, 0);transform: translate3d(10px, -50%, 0);
841
- }[data-balloon][data-balloon-pos='left']::after
842
- {top: 50%;right: 100%;width: 6px;height: 18px;margin-right: 5px;-webkit-transform: translate3d(10px, -50%, 0);transform: translate3d(10px, -50%, 0);
843
-
844
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(-90 18 18)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');background-size: 100% auto;
845
- }[data-balloon][data-balloon-pos='left']:hover::before
846
- {
847
- -webkit-transform: translate3d(0, -50%, 0) ;transform: translate3d(0, -50%, 0);
848
- }[data-balloon][data-balloon-pos='left']:hover::after
849
- {
850
- -webkit-transform: translate3d(0, -50%, 0) ;transform: translate3d(0, -50%, 0);
851
- }[data-balloon][data-balloon-pos='right']::before
852
- {top: 50%;
853
- left: 100%;margin-left: 11px;-webkit-transform: translate3d(-10px, -50%, 0);transform: translate3d(-10px, -50%, 0);
854
- }[data-balloon][data-balloon-pos='right']::after
855
- {top: 50%;left: 100%;width: 6px;height: 18px;margin-left: 5px;-webkit-transform: translate3d(-10px, -50%, 0);transform: translate3d(-10px, -50%, 0);
856
-
857
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(90 6 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');background-size: 100% auto;
858
- }[data-balloon][data-balloon-pos='right']:hover::before
859
- {
860
- -webkit-transform: translate3d(0, -50%, 0) ;transform: translate3d(0, -50%, 0);
861
- }[data-balloon][data-balloon-pos='right']:hover::after
862
- {
863
- -webkit-transform: translate3d(0, -50%, 0) ;transform: translate3d(0, -50%, 0);
864
- }[data-balloon][data-balloon-length='small']::before
865
- {width: 80px;
866
 
867
- white-space: normal;
868
- }[data-balloon][data-balloon-length='medium']::before
869
- {width: 150px;
 
870
 
871
- white-space: normal;
872
- }[data-balloon][data-balloon-length='large']::before
873
- {width: 260px;
874
 
875
- white-space: normal;
876
- }[data-balloon][data-balloon-length='xlarge']::before
877
- {width: 380px;
 
 
878
 
879
- white-space: normal;
880
- }@media screen and (max-width: 768px)
881
- {
882
- [data-balloon][data-balloon-length='xlarge']::before
883
- {width: 90vw;
884
 
885
- white-space: normal;
886
- }
887
- }[data-balloon][data-balloon-length='fit']::before
888
- {width: 100%;
 
889
 
890
- white-space: normal;
891
- }body.modal-open
892
- {
893
- overflow: hidden;
894
- }body.modal-open #style-manager-user-feedback-modal .modal
895
- {visibility: visible;
896
- overflow-x: hidden;overflow-y: auto;-webkit-transform: translate(0, 0);transform: translate(0, 0);opacity: 1;
897
- }#style-manager-user-feedback-modal
898
- {
899
- height: 100%;
900
- }#style-manager-user-feedback-modal .modal
901
- {font-family: 'Galano Grotesque Alt', -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;font-size: 16px;font-weight: 400;line-height: 1.7;
902
-
903
- position: relative;z-index: 1050;top: 0;right: 0;bottom: 0;left: 0;display: -ms-flexbox;display: flex;visibility: hidden;overflow: hidden;height: 100%;transition: all .3s ease;-webkit-transform: translate(0, -10%);transform: translate(0, -10%);opacity: 0;outline: 0;-ms-flex-align: center;align-items: center;
904
- }#style-manager-user-feedback-modal .modal-dialog
905
- {
906
- position: relative;width: auto;margin: 10px;text-align: left;
907
- }#style-manager-user-feedback-modal .modal-content
908
- {
909
- position: relative;display: -ms-flexbox;display: flex;flex-direction: column;border: none;border-radius: 4px;outline: 0;background-color: #fff;background-clip: padding-box;box-shadow: 0 4px 4px 0 rgba(42,54,52,.1),0 8px 8px 0 rgba(42,54,52,.1),0 16px 16px 0 rgba(42,54,52,.1),0 16px 32px 0 rgba(42,54,52,.1),0 32px 64px 0 rgba(42,54,52,.1),0 64px 128px 0 rgba(42,54,52,.1);-ms-flex-direction: column;
910
- }#style-manager-user-feedback-modal .modal-content p
911
- {
912
- color: #000;
913
- }#style-manager-user-feedback-modal .modal-content p a
914
- {
915
- font-weight: 500;color: #9660c6;border-bottom: 1px solid #9660c6;
916
- }#style-manager-user-feedback-modal .modal-content > form
917
- {
918
- margin-bottom: 20px;
919
- }#style-manager-user-feedback-modal .modal-backdrop
920
- {
921
- position: fixed;z-index: 1040;top: 0;right: 0;bottom: 0;left: 0;visibility: hidden;transition: all .3s ease;opacity: 0;background-color: #000;
922
- }.modal-open #style-manager-user-feedback-modal .modal-backdrop
923
- {visibility: visible;
924
-
925
- opacity: .8;
926
- }#style-manager-user-feedback-modal .modal-header
927
- {
928
- display: -ms-flexbox ;display: flex;padding: 30px 48px 10px 48px;-ms-flex-align: start;align-items: flex-start;-ms-flex-pack: justify;justify-content: space-between;
929
- }#style-manager-user-feedback-modal .modal-header .close.button
930
- {
931
- top: -10px;
932
- }#style-manager-user-feedback-modal .modal-header .close.icon
933
- {
934
- opacity: .5;
935
- }#style-manager-user-feedback-modal .modal-header .close:hover
936
- {
937
- opacity: 1;
938
- }#style-manager-user-feedback-modal .modal-title
939
- {line-height: 1.5;
940
-
941
- margin-bottom: 10px;
942
- }#style-manager-user-feedback-modal .modal-title.modal-title--small
943
- {
944
- font-weight: 500;
945
- }#style-manager-user-feedback-modal .modal-body
946
- {
947
- position: relative;padding: 30px 30px 0 30px;-ms-flex: 1 1 auto;flex: 1 1 auto;
948
- }#style-manager-user-feedback-modal .modal-body.full
949
- {
950
- padding: 0;
951
- }#style-manager-user-feedback-modal .modal-body.full .box
952
- {margin-top: 0;
953
- padding-top: 0;padding-bottom: 0;
954
- }#style-manager-user-feedback-modal .modal-body.full + .modal-footer.full .box
955
- {
956
- padding-top: 18px;
957
- }#style-manager-user-feedback-modal .modal-footer
958
- {
959
- padding: 30px;text-align: center;
960
- }#style-manager-user-feedback-modal .modal-footer .box .button:last-child
961
- {
962
- margin-bottom: 0;
963
- }#style-manager-user-feedback-modal .modal-footer.full
964
- {
965
- padding: 0;
966
- }#style-manager-user-feedback-modal .modal-scrollbar-measure
967
- {
968
- position: absolute;top: -9999px;overflow: scroll;width: 50px;height: 50px;
969
- }#style-manager-user-feedback-modal .modal-state
970
- {
971
- display: none;
972
- }#style-manager-user-feedback-modal .modal-state:checked + .modal
973
- {visibility: visible;
974
 
975
- opacity: 1;
976
- }#style-manager-user-feedback-modal .modal-state:checked + .modal .modal__inner
977
- {
978
- top: 0;
979
- }@media (min-width: 576px)
980
- {
981
- #style-manager-user-feedback-modal .modal-dialog
982
- {
983
- max-width: 655px;margin: 30px auto;
984
- }#style-manager-user-feedback-modal .modal-sm
985
- {
986
- max-width: 300px;
987
- }
988
- }@media (min-width: 576px)
989
- {
990
- #style-manager-user-feedback-modal .modal-lg
991
- {
992
- max-width: 800px;
993
- }
994
- }#style-manager-user-feedback .modal-body .box
995
- {
996
- position: relative;display: -ms-flexbox;display: flex;flex-direction: column;margin: 20px 0;padding: 16px 52px;border-radius: 4px;-ms-flex-direction: column;-ms-flex-wrap: nowrap;flex-wrap: nowrap;-ms-flex-align: center;align-items: center;
997
- }#style-manager-user-feedback .modal-body .box > *
998
- {
999
- width: 100%;
1000
- }#style-manager-user-feedback .modal-body p
1001
- {
1002
- font-size: 16px;margin-bottom: 20px;
1003
- }#style-manager-user-feedback .modal-body textarea
1004
- {font-family: 'Galano Grotesque Alt', -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;font-size: 16px;line-height: 26px;
1005
-
1006
- width: 100%;margin: 0;padding: 11px 18px;color: #473850;border: 1px solid #ddd;border-radius: 4px;box-shadow: none;
1007
- }#style-manager-user-feedback .modal-title
1008
- {font-family: 'Galano Classic', -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;font-size: 28px;font-weight: 600;line-height: 1.4;
1009
-
1010
- margin-top: 0;margin-bottom: 34px;text-align: center;
1011
- }#style-manager-user-feedback .button
1012
- {font-family: 'Galano Classic', -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;font-size: 16px;font-weight: 600;line-height: 23px;position: relative;display: inline-block;width: 100%;height: auto;margin-top: 20px;padding: 15px 50px;cursor: pointer;transition-timing-function: cubic-bezier(0, 0, .58, 1);transition-duration: .2s;transition-property: -webkit-transform,background,background-color,color,box-shadow;transition-property: transform,background,background-color,color,box-shadow;text-align: center;
1013
- text-decoration: none;color: #fff;border-radius: 2px;border-radius: 4px;background-color: #9660c6;box-shadow: none;-webkit-font-smoothing: antialiased;
1014
- }#style-manager-user-feedback .button:hover
1015
- {-webkit-transform: scale(1.05) translateY(-3px) ;transform: scale(1.05) translateY(-3px);color: #fff;
1016
- background-color: #9660c6;box-shadow: 0 10px 20px -10px rgba(0,0,0,.7);
1017
- }#style-manager-user-feedback .second-step
1018
- {
1019
- margin-top: 18px;
1020
- }#style-manager-user-feedback .thanks-step,
1021
- #style-manager-user-feedback .error-step
1022
- {
1023
- text-align: center;
1024
- }#style-manager-user-feedback .thanks-step .modal-title,
1025
- #style-manager-user-feedback .error-step .modal-title
1026
- {
1027
- margin-bottom: 0;
1028
- }#style-manager-user-feedback .thanks-step p:last-child,
1029
- #style-manager-user-feedback .error-step p:last-child
1030
- {
1031
- margin-bottom: 10px;
1032
- }.scorecard
1033
- {font-family: 'Galano Classic', -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;font-size: 18px;font-weight: 600;
1034
-
1035
- display: -ms-flexbox;display: flex;text-align: center;color: #9660c6;-ms-flex-align: baseline;align-items: baseline;-ms-flex-pack: space-evenly;justify-content: space-evenly;
1036
- }.scorecard > label
1037
- {
1038
- font-size: 20px;
1039
- }.scorecard > label span
1040
- {line-height: 46px;
1041
-
1042
- display: block;width: 46px;transition: all .25s ease;border: 2px solid #9660c6;border-radius: 100%;background: #fff;
1043
- }.scorecard > label input[type='radio']
1044
- {
1045
- display: none;
1046
- }.scorecard > label span:hover,
1047
- .scorecard > label input[type='radio']:checked ~ span
1048
- {color: #fff;
1049
- background: #9660c6;
1050
- }.font-options__wrapper .font-options__options-list
1051
- {
1052
- border-color: #b8daeb;box-shadow: 0 10px 20px 0 rgba(0,0,0,.15);
1053
- }.font-options__wrapper .font-options__option
1054
- {
1055
- margin-bottom: 12px;
1056
- }.font-options__wrapper .font-options__option label
1057
- {
1058
- display: block;margin-bottom: 6px;
1059
- }.font-options__wrapper [type=checkbox]:checked ~ .font-options__options-list
1060
- {display: block;
1061
 
1062
- opacity: 1;
1063
- }input.customify_font_tooltip
1064
- {
1065
- display: none;
1066
- }ul.font-options__options-list .select2-container
1067
- {
1068
- width: 100% !important;
1069
- }ul.font-options__options-list .select2-container .select2-selection--single
1070
- {
1071
- -webkit-appearance: initial;
1072
- }ul.font-options__options-list .select2-container .select2-selection--single .select2-selection__arrow
1073
- {
1074
- display: none;
1075
- }ul.font-options__options-list .select2-container--default .select2-selection--single .select2-selection__rendered
1076
- {line-height: initial;
1077
-
1078
- color: inherit;
1079
- }.select2-container.select2-container--open
1080
- {
1081
- z-index: 99999999;
1082
- }#customize-theme-controls .select2-container
1083
- {
1084
- width: 100% !important;
1085
- }#customize-theme-controls .select2-container .select2-selection--multiple
1086
- {height: auto;padding: 4px 8px 4px;background: none;
1087
-
1088
- -webkit-appearance: initial;
1089
- }#customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__arrow
1090
- {
1091
- display: none;
1092
- }#customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered
1093
- {display: -ms-flexbox;display: flex;
1094
-
1095
- padding: 0;
1096
- }#customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline
1097
- {
1098
- -ms-flex: 1 ;flex: 1;
1099
- }#customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline .select2-search__field[class]
1100
- {
1101
- min-width: 100%;margin-top: 3px !important;border-width: 0;
1102
- }#customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice
1103
- {margin-top: 0;margin-right: 6px;
1104
- padding: 3px 7px;border-color: #e0e8ef;background-color: #f6fbff;
1105
- }#customize-theme-controls .select2-container .select2-search--inline .select2-search__field
1106
- {min-width: 9em;
1107
- height: 29px;margin-top: 0;
1108
- }.select2-container--default .select2-results__option[aria-selected=true][class]
1109
- {pointer-events: none;opacity: .3;
1110
- background: transparent;
1111
- }.select2-container .select2-dropdown
1112
- {
1113
- border-color: #e0e8ef;
1114
- }#customize-theme-controls .widget-content .accordion-container
1115
- {margin-top: 20px;margin-right: -10px;margin-bottom: 10px;
1116
- margin-left: -10px;
1117
- }#customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-content
1118
- {
1119
- position: relative;left: 0;overflow: hidden;max-height: 0;padding-top: 0;padding-bottom: 0;transition: all .4s ease;color: #416b7e;
1120
- }#customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-content p:first-child
1121
- {
1122
- margin-top: 0;
1123
- }#customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-content p:last-child
1124
- {
1125
- margin-bottom: 0;
1126
- }#customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-title
1127
- {
1128
- color: #39474d;
1129
- }#customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-title:after
1130
- {
1131
- content: '\f142';-webkit-transform: rotate(180deg);transform: rotate(180deg);
1132
- }#customize-theme-controls .widget-content .accordion-container .accordion-section.open
1133
- {
1134
- border-bottom: none;
1135
- }#customize-theme-controls .widget-content .accordion-container .accordion-section.open .accordion-section-content
1136
- {
1137
- max-height: 100%;padding-top: 17px;padding-bottom: 17px;
1138
- }#customize-theme-controls .widget-content .accordion-container .accordion-section.open .accordion-section-title
1139
- {
1140
- border-bottom: 1px solid;
1141
- }#customize-theme-controls .widget-content .accordion-container .accordion-section.open .accordion-section-title:after
1142
- {
1143
- -webkit-transform: rotate(0deg) ;transform: rotate(0deg);
1144
- }#customize-theme-controls .widget-content .accordion-container label.customize-control-title,
1145
- #customize-theme-controls .widget-content .accordion-container label.separator.label
1146
- {
1147
- cursor: default;
1148
- }.widget .widget-content > p input[type=checkbox],
1149
- .widget .widget-content > p input[type=radio]
1150
- {margin-top: 3px;
1151
- margin-bottom: 3px;
1152
- }.widget .widget-content small
1153
- {display: block;
1154
-
1155
- margin-top: 5px;
1156
- }#available-widgets [class*=pixelgrade] .widget .widget-title:before,
1157
- #available-widgets [class*=featured-posts] .widget .widget-title:before,
1158
- #available-widgets [class*=categories-image-grid] .widget .widget-title:before
1159
- {
1160
- content: '\f538';color: #9660c6;
1161
- }#available-widgets [class*=pixelgrade-featured-posts-slideshow] .widget .widget-title:before
1162
- {
1163
- content: '\f233';
1164
- }#available-widgets [class*=pixelgrade-featured-posts-carousel] .widget .widget-title:before
1165
- {
1166
- content: '\f169';
1167
- }#available-widgets [class*=featured-posts-grid] .widget .widget-title:before
1168
- {
1169
- content: '\f180';
1170
- }#available-widgets [class*=featured-posts-list] .widget .widget-title:before
1171
- {
1172
- content: '\f164';
1173
- }#available-widgets [class*=categories-image-grid] .widget .widget-title:before
1174
- {
1175
- content: '\f163';
1176
- }#available-widgets [class*=pixelgrade-promo-box] .widget .widget-title:before
1177
- {
1178
- content: '\f488';
1179
- }.ui-tooltip
1180
- {
1181
- z-index: 999999;
1182
- }.wp-customizer .widget-conditional .condition-control:after
1183
- {display: table;clear: both;
1184
-
1185
- content: ' ';
1186
- }.wp-customizer .widget-conditional .selection
1187
- {margin-right: 0;margin-bottom: 10px;margin-left: 0;
1188
- padding-right: 50px;padding-bottom: 19px;padding-left: 28px;border-bottom: 1px solid #cbcfd4;
1189
- }.wp-customizer .widget-conditional .condition:last-child .selection
1190
- {
1191
- border: 0;
1192
- }.wp-customizer .widget-conditional select
1193
- {width: 170px;
1194
- max-width: 100%;
1195
- }.wp-customizer .widget-conditional .condition-top select
1196
- {
1197
- width: 130px;
1198
- }.pix_customizer_setting .customize-inside-control-row
1199
- {
1200
- position: relative;overflow: hidden;width: 100% !important;height: 64px;margin-left: 0 !important;text-indent: 0 !important;border-radius: 5px;background-position: 50% 50%;background-size: cover;
1201
- }.pix_customizer_setting .customize-inside-control-row:before
1202
- {position: absolute;z-index: 10;top: 0;right: 0;bottom: 0;left: 0;
1203
-
1204
- content: '';pointer-events: none;box-shadow: inset 0 0 3px 0 rgba(0,0,0,.2);
1205
- }.pix_customizer_setting .customize-inside-control-row:hover:before
1206
- {
1207
- box-shadow: inset 0 0 3px 0 rgba(0,0,0,.4);
1208
- }.pix_customizer_setting .customize-inside-control-row:hover .palette__item
1209
- {
1210
- -webkit-transform: translateY(0%) ;transform: translateY(0%);
1211
- }.pix_customizer_setting .customize-inside-control-row:hover label
1212
- {
1213
- left: 10px;
1214
- }.pix_customizer_setting .customize-inside-control-row input
1215
- {
1216
- opacity: 0;
1217
- }.pix_customizer_setting .customize-inside-control-row input:checked + label .preview__letter--checked
1218
- {
1219
- display: inline-block;vertical-align: middle;
1220
- }.pix_customizer_setting .customize-inside-control-row input:checked + label .preview__letter
1221
- {
1222
- display: none;
1223
- }.pix_customizer_setting .customize-inside-control-row label
1224
- {
1225
- position: absolute;z-index: 2;top: 0;left: 0;display: -ms-flexbox;display: flex;width: 100%;height: 100%;margin-top: 0 !important;padding: 0 10px;transition: all .3s ease;-ms-flex-align: center;align-items: center;
1226
- }.pix_customizer_setting .customize-inside-control-row .palette
1227
- {
1228
- position: absolute;z-index: 1;top: 0;left: 0;display: -ms-flexbox;display: flex;width: 100%;height: 100%;transition: all .2s ease;
1229
- }.pix_customizer_setting .customize-inside-control-row .palette__item
1230
- {transition: all .3s ease;-webkit-transform: translateY(100%);transform: translateY(100%);
1231
-
1232
- -ms-flex: 1;flex: 1;
1233
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(1)
1234
- {
1235
- transition-delay: 0s;
1236
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(2)
1237
- {
1238
- transition-delay: .05s;
1239
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(3)
1240
- {
1241
- transition-delay: .1s;
1242
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(4)
1243
- {
1244
- transition-delay: .15s;
1245
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(5)
1246
- {
1247
- transition-delay: .2s;
1248
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(6)
1249
- {
1250
- transition-delay: .25s;
1251
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(7)
1252
- {
1253
- transition-delay: .3s;
1254
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(8)
1255
- {
1256
- transition-delay: .35s;
1257
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(9)
1258
- {
1259
- transition-delay: .4s;
1260
- }.pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(10)
1261
- {
1262
- transition-delay: .45s;
1263
- }.pix_customizer_setting .customize-inside-control-row .preview__letter,
1264
- .pix_customizer_setting .customize-inside-control-row .preview__letter--checked
1265
- {font-style: normal;
1266
-
1267
- display: inline-block;min-width: 26px;min-height: 26px;margin-right: 5px;padding: 3px;text-align: center;vertical-align: baseline;color: white;border-radius: 2px;background-repeat: no-repeat;background-position: center center;background-size: 15px 15px;
1268
- }.pix_customizer_setting .customize-inside-control-row .preview__letter--checked
1269
- {
1270
- display: none;
1271
- }[id*='sm_current_color_palette_control'] .customize-inside-control-row .palette__item[class]
1272
- {
1273
- -webkit-transform: none ;transform: none;
1274
- }[id*='sm_current_color_palette_control'] .variation-control
1275
- {
1276
- display: -ms-flexbox ;display: flex;
1277
- }.label__inner
1278
- {z-index: 2;padding: 7px 12px 7px 7px;
1279
-
1280
- color: #000;border-radius: 3px;background: #f5f6f1;box-shadow: 0 2px 5px rgba(0,0,0,.15);
1281
- }.picker
1282
- {
1283
- position: relative;top: 0;left: 50%;overflow: hidden;width: 80%;max-width: 3em;margin-top: auto;margin-bottom: auto;-webkit-transform: translate3d(-50%, 0, 0);transform: translate3d(-50%, 0, 0);border-radius: 50%;
1284
- }.colors .picker > i
1285
- {position: absolute;z-index: 20;top: 0;right: 0;bottom: 0;left: 0;
1286
-
1287
- display: block;pointer-events: none;border-radius: 50%;box-shadow: inset 0 0 3px 0 rgba(0,0,0,.2);
1288
- }.picker:before,
1289
- .picker:after
1290
- {display: block;
1291
-
1292
- content: '';border-radius: 50%;background: currentColor;
1293
- }.picker:before
1294
- {
1295
- padding-top: 100%;
1296
- }.picker:after
1297
- {
1298
- position: absolute;top: 0;left: 0;width: 100%;height: 100%;
1299
- }.fill
1300
- {
1301
- overflow: hidden;
1302
- }.color:first-child .fill
1303
- {
1304
- border-top-left-radius: 5px;border-bottom-left-radius: 5px;
1305
- }.color:last-child .fill
1306
- {
1307
- border-top-right-radius: 5px;border-bottom-right-radius: 5px;
1308
- }.label
1309
- {
1310
- margin-right: auto;
1311
- }#customize-theme-controls [id*='sm_current_color_palette_control']
1312
- {
1313
- display: block;width: auto;
1314
- }#customize-theme-controls [id*='sm_current_color_palette_control'] .color-palette-container
1315
- {
1316
- background: white;
1317
- }#customize-theme-controls [id*='sm_current_color_palette_control'] .color-palette-container .description
1318
- {
1319
- margin-bottom: 15px;
1320
- }#customize-theme-controls [id*='sm_current_color_palette_control'] .description.c-color-palette__notification
1321
- {font-size: inherit;font-weight: bold;margin-bottom: 0;
1322
- padding-top: 19px;
1323
- }.c-color-palette__fields
1324
- {
1325
- position: relative;
1326
- }.c-color-palette .iris-picker
1327
- {
1328
- position: absolute;z-index: 100;top: 100%;left: 0;margin-top: 1em;border: 0;box-shadow: black 0 3px 12px -4px;
1329
- }.c-color-palette .iris-picker .iris-square-handle
1330
- {top: -6px;left: -6px;
1331
-
1332
- border-color: transparent;
1333
- }.c-color-palette .iris-picker .iris-square-handle:after
1334
- {
1335
- position: absolute;top: 0;right: 0;bottom: 0;left: 0;border: 2px solid white;
1336
- }.c-color-palette .iris-picker .iris-square-value
1337
- {
1338
- box-shadow: none !important;
1339
- }.colors
1340
- {
1341
- position: relative;display: -ms-flexbox;display: flex;width: 100%;height: 3em;-ms-flex-wrap: wrap;flex-wrap: wrap;-ms-flex-align: center;align-items: center;
1342
- }.color
1343
- {
1344
- display: -ms-flexbox ;display: flex;overflow: hidden;flex-direction: column;transition: -ms-flex-positive .3s cubic-bezier(.18, .89, .32, 1.28);transition: flex-grow .3s cubic-bezier(.18, .89, .32, 1.28);-ms-flex-direction: column;-ms-flex: 1 1 0;flex: 1 1 0;
1345
- }.color.hidden
1346
- {
1347
- display: -ms-flexbox ;display: flex;transition: -ms-flex-positive .3s cubic-bezier(.6, -1, .74, .05);transition: flex-grow .3s cubic-bezier(.6, -1, .74, .05);-ms-flex-positive: 0;flex-grow: 0;
1348
- }.color.hidden .picker
1349
- {transition: opacity .2s ease-out;
1350
 
1351
- opacity: 0;
1352
- }.color .picker
1353
- {cursor: pointer;
1354
- transition: opacity .3s ease-in-out, border-color .3s ease-in-out;
1355
- }.color.inactive .picker
1356
- {
1357
- opacity: .2;
1358
- }.color.inactive .picker:hover
1359
- {
1360
- opacity: 1;
1361
- }input.c-color-palette__input[class]
1362
- {
1363
- margin-top: 1em;
1364
- }#customize-control-sm_toggle_advanced_settings_control
1365
- {
1366
- margin-bottom: 0;opacity: 0;
1367
- }#customize-control-sm_toggle_advanced_settings_control button
1368
- {
1369
- width: 100%;
1370
- }@-webkit-keyframes bounceIn
1371
- {
1372
- 0%,
1373
- 20%,
1374
- 40%,
1375
- 60%,
1376
- 80%,
1377
- 100%
1378
- {
1379
- -webkit-animation-timing-function: cubic-bezier(.215, .61, .355, 1) ;animation-timing-function: cubic-bezier(.215, .61, .355, 1);
1380
- }0%
1381
- {-webkit-transform: scale3d(.3, .3, .3) ;transform: scale3d(.3, .3, .3);
1382
-
1383
- opacity: 0;
1384
- }20%
1385
- {
1386
- -webkit-transform: scale3d(1.1, 1.1, 1.1) ;transform: scale3d(1.1, 1.1, 1.1);
1387
- }40%
1388
- {
1389
- -webkit-transform: scale3d(.9, .9, .9) ;transform: scale3d(.9, .9, .9);
1390
- }60%
1391
- {-webkit-transform: scale3d(1.03, 1.03, 1.03) ;transform: scale3d(1.03, 1.03, 1.03);
1392
-
1393
- opacity: 1;
1394
- }80%
1395
- {
1396
- -webkit-transform: scale3d(.97, .97, .97) ;transform: scale3d(.97, .97, .97);
1397
- }100%
1398
- {-webkit-transform: scale3d(1, 1, 1) ;transform: scale3d(1, 1, 1);
1399
-
1400
- opacity: 1;
1401
- }
1402
- }@keyframes bounceIn
1403
- {
1404
- 0%,
1405
- 20%,
1406
- 40%,
1407
- 60%,
1408
- 80%,
1409
- 100%
1410
- {
1411
- -webkit-animation-timing-function: cubic-bezier(.215, .61, .355, 1) ;animation-timing-function: cubic-bezier(.215, .61, .355, 1);
1412
- }0%
1413
- {-webkit-transform: scale3d(.3, .3, .3) ;transform: scale3d(.3, .3, .3);
1414
-
1415
- opacity: 0;
1416
- }20%
1417
- {
1418
- -webkit-transform: scale3d(1.1, 1.1, 1.1) ;transform: scale3d(1.1, 1.1, 1.1);
1419
- }40%
1420
- {
1421
- -webkit-transform: scale3d(.9, .9, .9) ;transform: scale3d(.9, .9, .9);
1422
- }60%
1423
- {-webkit-transform: scale3d(1.03, 1.03, 1.03) ;transform: scale3d(1.03, 1.03, 1.03);
1424
-
1425
- opacity: 1;
1426
- }80%
1427
- {
1428
- -webkit-transform: scale3d(.97, .97, .97) ;transform: scale3d(.97, .97, .97);
1429
- }100%
1430
- {-webkit-transform: scale3d(1, 1, 1) ;transform: scale3d(1, 1, 1);
1431
-
1432
- opacity: 1;
1433
- }
1434
- }#customize-theme-controls #sub-accordion-panel-style_manager_panel .customize-panel-description,
1435
- #customize-theme-controls #sub-accordion-panel-theme_options_panel .customize-panel-description
1436
- {
1437
- display: block;
1438
- }#customize-theme-controls li#accordion-panel-style_manager_panel h3.accordion-section-title:before
1439
- {font-family: dashicons;font-size: 17px;
1440
-
1441
- position: relative;float: right;margin-right: 28px;padding: 1px;content: '';color: #aed2e5;-webkit-font-smoothing: antialiased;
1442
- }#customize-theme-controls li#accordion-panel-style_manager_panel h3.accordion-section-title:before
1443
- {
1444
- font-size: 18px;color: #f8bc30;
1445
- }#customize-theme-controls li#accordion-section-sm_color_palettes_section h3.accordion-section-title:before
1446
- {font-family: dashicons;font-size: 17px;
1447
-
1448
- position: relative;float: right;margin-right: 28px;padding: 1px;content: '';color: #aed2e5;-webkit-font-smoothing: antialiased;
1449
- }#customize-theme-controls li#accordion-section-sm_color_palettes_section h3.accordion-section-title
1450
- {
1451
- border-top: none;
1452
- }#customize-theme-controls li#accordion-section-sm_font_palettes_section h3.accordion-section-title:before
1453
- {font-family: dashicons;font-size: 17px;
1454
-
1455
- position: relative;float: right;margin-right: 28px;padding: 1px;content: '';color: #aed2e5;-webkit-font-smoothing: antialiased;
1456
- }#customize-theme-controls li#accordion-section-sm_color_palettes_section h3.accordion-section-title:before,
1457
- #customize-theme-controls li#accordion-section-sm_font_palettes_section h3.accordion-section-title:before
1458
- {margin-top: -2px;margin-right: 5px;
1459
- padding: 3px;
1460
- }#customize-theme-controls li#accordion-panel-theme_options_panel h3.accordion-section-title:before
1461
- {font-family: dashicons;font-size: 17px;
1462
-
1463
- position: relative;float: right;margin-right: 28px;padding: 1px;content: '';color: #aed2e5;-webkit-font-smoothing: antialiased;
1464
- }#customize-theme-controls li#accordion-panel-theme_options_panel h3.accordion-section-title
1465
- {margin: 0 0 15px 0;border-right: none;
1466
- border-bottom: 1px solid #ddd;border-left: none;
1467
- }.color .disc
1468
- {position: absolute;z-index: 15;top: 0;right: 0;bottom: 0;left: 0;
1469
-
1470
- display: block;overflow: hidden;transition: opacity .3s ease-in-out;pointer-events: none;opacity: 0;
1471
- }.color .disc:after
1472
- {position: absolute;top: -50%;left: -50%;display: block;width: 200%;height: 200%;padding-top: 100%;
1473
-
1474
- content: '';-webkit-transform: scale(1);transform: scale(1);background-image: linear-gradient(330deg, transparent 50%, #ff8100 0),linear-gradient(300deg, transparent 50%, #ff5800 0),linear-gradient(270deg, transparent 50%, #c92323 0),linear-gradient(240deg, transparent 50%, #cc42a2 0),linear-gradient(210deg, transparent 50%, #9f49ac 0),linear-gradient(180deg, transparent 50%, #306cd3 0),linear-gradient(150deg, transparent 50%, #179067 0),linear-gradient(120deg, transparent 50%, #0eb5d6 0),linear-gradient(90deg, transparent 50%, #50b517 0),linear-gradient(60deg, transparent 50%, #ede604 0),linear-gradient(30deg, transparent 50%, #fc0 0),linear-gradient(0deg, transparent 50%, #feac00 0);background-clip: content-box,content-box,content-box,content-box,content-box,content-box,padding-box,padding-box,padding-box,padding-box,padding-box,padding-box;-webkit-filter: blur(6px) saturate(.7) brightness(1.1);filter: blur(6px) saturate(.7) brightness(1.1);
1475
- }.color.altered .disc
1476
- {
1477
- opacity: 1;
1478
- }.customize-control-color .wp-picker-container .iris-picker .iris-palette-container
1479
- {
1480
- display: -ms-flexbox ;display: flex;width: 215px;
1481
- }.customize-control-color .wp-picker-container .iris-picker .iris-palette
1482
- {float: none;
1483
-
1484
- width: auto !important;height: auto !important;-ms-flex: 1 1 0;flex: 1 1 0;
1485
- }.customize-control-color .wp-picker-container .iris-picker .iris-palette:after
1486
- {display: block;padding-top: 100%;
1487
-
1488
- content: '';
1489
- }.c-color-palette
1490
- {
1491
- padding: 30px 20px 18px;
1492
- }[id='customize-control-sm_current_color_palette_control'][id]
1493
- {
1494
- margin-bottom: 0;
1495
- }[id='customize-control-sm_current_color_palette_control'][id] ~ .customize-control
1496
- {margin-bottom: 0;padding: 24px 20px 0;
1497
-
1498
- background-color: #fff;
1499
- }#customize-control-sm_dark_color_primary_slider_control,
1500
- #customize-control-sm_dark_color_secondary_slider_control,
1501
- #customize-control-sm_dark_color_tertiary_slider_control
1502
- {
1503
- display: none !important;
1504
- }.sm_color_matrix
1505
- {
1506
- display: -ms-flexbox ;display: flex;margin-left: -15px;-ms-flex-wrap: wrap;flex-wrap: wrap;
1507
- }.sm_color_matrix > *
1508
- {
1509
- display: grid;padding-top: 15px;padding-left: 15px;grid-auto-rows: 2px;grid-auto-columns: 2px;-ms-flex: 0 0 33.33333%;flex: 0 0 33.33333%;
1510
- }.sm_color_matrix > * > *
1511
- {-webkit-animation-name: bounceIn ;animation-name: bounceIn;-webkit-animation-duration: .75s;animation-duration: .75s;border: 1px solid #ccc;border-radius: 50%;
1512
- background-color: currentColor;
1513
- }.sm_color_matrix > * > :nth-child(1)
1514
- {
1515
- grid-area: 16 / 12 / span 12 / span 12;
1516
- }.sm_color_matrix > * > :nth-child(2)
1517
- {
1518
- grid-area: 26 / 24 / span 4 / span 4;
1519
- }.sm_color_matrix > * > :nth-child(3)
1520
- {
1521
- grid-area: 13 / 24 / span 4 / span 4;
1522
- }.sm_color_matrix > * > :nth-child(4)
1523
- {
1524
- grid-area: 8 / 8 / span 8 / span 8;
1525
- }.sm_color_matrix > * > :nth-child(5)
1526
- {
1527
- grid-area: 32 / 8 / span 4 / span 4;
1528
- }.sm_color_matrix > * > :nth-child(6)
1529
- {
1530
- grid-area: 30 / 16 / span 8 / span 8;
1531
- }.sm_color_matrix > * > :nth-child(7)
1532
- {
1533
- grid-area: 4 / 20 / span 8 / span 8;
1534
- }.sm_color_matrix > * > :nth-child(8)
1535
- {
1536
- grid-area: 17 / 26 / span 8 / span 8;
1537
- }.sm_color_matrix > * > :nth-child(9)
1538
- {
1539
- grid-area: 22 / 2 / span 8 / span 8;
1540
- }.sm_color_matrix > * > :nth-child(10)
1541
- {
1542
- grid-area: 28 / 11 / span 2 / span 2;
1543
- }.sm_color_matrix > * > :nth-child(11)
1544
- {
1545
- grid-area: 9 / 31 / span 6 / span 6;
1546
- }.sm_color_matrix > * > :nth-child(11)
1547
- {
1548
- grid-area: 26 / 30 / span 9 / span 9;
1549
- }.sm_color_matrix > * > :nth-child(12)
1550
- {
1551
- grid-area: 17 / 7 / span 4 / span 4;
1552
- }.sm_color_matrix > * > :nth-child(13)
1553
- {
1554
- grid-area: 19 / 36 / span 6 / span 6;
1555
- }.sm_color_matrix > * > :nth-child(14)
1556
- {
1557
- grid-area: 12 / 18 / span 2 / span 2;
1558
- }.sm_color_matrix > * > :nth-child(n+15)
1559
- {
1560
- display: none;
1561
- }.sm-tabs
1562
- {
1563
- display: -ms-flexbox ;display: flex;padding: 0 16px;text-align: center;border-bottom: 1px solid #dfe8ef;-ms-flex-pack: justify;justify-content: space-between;
1564
- }.sm-tabs__item
1565
- {font-size: 14px;margin-bottom: -1px;
1566
- padding: 12px 0;cursor: pointer;transition: all .2s ease;opacity: .7;color: #416b7e;border-bottom: 3px solid transparent;-ms-flex-preferred-size: 31%;flex-basis: 31%;
1567
- }.sm-tabs__item:not(.sm-tabs__item--active):hover
1568
- {opacity: 1;
1569
- color: #2a3b44;border-bottom-color: #e2e4e7;
1570
- }.sm-tabs__item--active
1571
- {opacity: 1;
1572
- color: #2a3b44;border-bottom-color: #57abd5;
1573
- }[id='sub-accordion-section-sm_color_palettes_section']
1574
- {
1575
- display: -ms-flexbox !important ;display: flex !important;overflow: hidden;flex-direction: column;padding: 12px 0 0 !important;-ms-flex-direction: column;
1576
- }[id='sub-accordion-section-sm_color_palettes_section'] #customize-control-sm_color_palette_control
1577
- {overflow-y: scroll;margin-bottom: 0;padding-top: 12px;
1578
-
1579
- -ms-flex-negative: 0;flex-shrink: 0;-ms-flex-positive: 1;flex-grow: 1;
1580
- }[id='sub-accordion-section-sm_color_palettes_section'] > *
1581
- {padding: 0 12px;
1582
-
1583
- -ms-flex-positive: 0;flex-grow: 0;
1584
- }[id='sub-accordion-section-sm_color_palettes_section'] [id='customize-control-sm_current_color_palette_control'] ~ *
1585
- {
1586
- display: none !important;
1587
- }[id='sub-accordion-section-sm_color_palettes_section'] [id='customize-control-sm_palettes_description_control'] span,
1588
- [id='sub-accordion-section-sm_color_palettes_section'] [id='customize-control-sm_filters_description_control'] span,
1589
- [id='sub-accordion-section-sm_color_palettes_section'] [id='customize-control-sm_customize_description_control'] span
1590
- {
1591
- margin: 0;
1592
- }[id='sub-accordion-section-sm_color_palettes_section'].sm-view-palettes [id='customize-control-sm_palettes_description_control'],
1593
- [id='sub-accordion-section-sm_color_palettes_section'].sm-view-palettes [id='customize-control-sm_color_palette_control']
1594
- {
1595
- display: block !important;
1596
- }[id='sub-accordion-section-sm_color_palettes_section'].sm-view-filters [id='customize-control-sm_filters_description_control'],
1597
- [id='sub-accordion-section-sm_color_palettes_section'].sm-view-filters [id='customize-control-sm_palette_filter_control']
1598
- {
1599
- display: block !important;
1600
- }[id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize [id='customize-control-sm_customize_description_control'],
1601
- [id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize [id='customize-control-sm_coloration_level_control'],
1602
- [id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize [id='customize-control-sm_color_diversity_control'],
1603
- [id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize [id='customize-control-sm_shuffle_colors_control'],
1604
- [id='sub-accordion-section-sm_color_palettes_section'].sm-view-customize [id='customize-control-sm_dark_mode_control']
1605
- {
1606
- display: block !important;
1607
- }[id='sub-accordion-section-sm_color_palettes_section'] [id='customize-control-sm_spacing_bottom_control'][id]
1608
- {
1609
- display: block !important;min-height: 24px;-ms-flex-positive: 1;flex-grow: 1;
1610
- }[id='customize-control-sm_color_palette_control'] .customize-control-title,
1611
- [id='customize-control-sm_color_palette_control'] .separator.label,
1612
- [id='customize-control-sm_color_palette_control'] .customize-control-description
1613
- {
1614
- display: none;
1615
- }.customize-control-radio[class][id='customize-control-sm_palette_filter_control'] > .customize-inside-control-row:not(:only-of-type)
1616
- {
1617
- display: block;width: auto;
1618
- }.color[class*='sm_color'][class*='_connected'],
1619
- .color[class*='sm_dark'][class*='_connected'],
1620
- .color[class*='sm_light'][class*='_connected']
1621
- {
1622
- display: none;
1623
- }.c-color-palette__colors
1624
- {
1625
- position: relative;
1626
- }.c-color-palette canvas,
1627
- .c-color-palette svg
1628
- {
1629
- max-width: 100%;height: auto;
1630
- }.c-color-palette__fields
1631
- {
1632
- position: absolute;z-index: 100;top: 100%;right: 0;left: 0;
1633
- }[id='sub-accordion-section-sm_color_palettes_section'] > .customize-section-description-container
1634
- {
1635
- margin-bottom: 0;border-bottom: 1px solid #dfe8ef;
1636
- }.sm-palette-filter .colors
1637
- {
1638
- width: auto;height: auto;padding: 10px 10px;border-radius: 999em;
1639
- }.sm-palette-filter .picker:after
1640
- {
1641
- box-shadow: inset 0 0 3px 0 rgba(0,0,0,.2);
1642
- }.sm-palette-filter > label
1643
- {
1644
- position: relative;display: block;margin: 0 0 10px;
1645
- }.sm-palette-filter > label:hover .filter-label
1646
- {
1647
- opacity: 1;
1648
- }.sm-palette-filter > input
1649
- {
1650
- display: none;
1651
- }.sm-palette-filter .filter-label
1652
- {
1653
- position: absolute;z-index: 10;top: 0;left: 0;display: -ms-flexbox;display: flex;width: 100%;height: 100%;transition: opacity .2s ease-out;opacity: 0;-ms-flex-align: center;align-items: center;-ms-flex-pack: center;justify-content: center;
1654
- }.sm-palette-filter .filter-label span
1655
- {
1656
- position: relative;z-index: 20;
1657
- }.sm-palette-filter .filter-label:after
1658
- {position: absolute;z-index: 10;top: 0;left: 0;display: block;width: 100%;height: 100%;
1659
-
1660
- content: '';border-radius: 999em;background-color: #fff;box-shadow: #d6e0e5 0 0 0 1px;
1661
- }.sm-palette-filter > input:checked + label .filter-label:after
1662
- {
1663
- background-color: #f7f9fa;box-shadow: none;
1664
- }.sm-palette-filter > input:checked + label .colors
1665
- {
1666
- background-color: #f7f9fa;box-shadow: #57abd5 0 0 0 2px;
1667
- }.customize-control-sm_palette_filter .customize-control-title,
1668
- .customize-control-sm_palette_filter .separator.label
1669
- {
1670
- display: none;
1671
- }#customize-control-sm_font_palette_control ~ .customize-control
1672
- {
1673
- display: none !important;
1674
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row
1675
- {overflow: hidden;
1676
-
1677
- height: auto;padding-top: 52%;border-radius: 6px;background-color: white;
1678
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row:before
1679
- {
1680
- border: 1px solid #dfe8ef;border-radius: 6px;
1681
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row:before,
1682
- .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row:hover:before
1683
- {
1684
- box-shadow: 0 1px 0 0 #b8daeb;
1685
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row input
1686
- {
1687
- display: none;
1688
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row label
1689
- {left: 0;
1690
-
1691
- border-radius: 6px;
1692
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row input + label
1693
- {
1694
- border: 2px solid transparent;
1695
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row input:checked + label
1696
- {
1697
- border-color: #57abd5;
1698
- }.pix_customizer_setting .font_palette[class][class] .customize-inside-control-row .label__inner
1699
- {
1700
- display: none;
1701
- }#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1702
  #customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,
1703
- #customize-theme-controls .control-section-nav_menu_locations .accordion-section-title
1704
- {
1705
- border-top: 0;
1706
  }
1
+ .sm-radio-group {
2
+ position: relative;
3
+ border-radius: 999em;
4
+ overflow: hidden;
5
+ height: 2.428em;
6
+ display: -webkit-box;
7
+ display: -ms-flexbox;
8
+ display: flex;
9
+ -ms-flex-wrap: nowrap;
10
+ flex-wrap: nowrap;
11
+ -webkit-box-align: stretch;
12
+ -ms-flex-align: stretch;
13
+ align-items: stretch;
14
+ color: rgba(65, 107, 126, 0.7);
15
+ font-size: 14px;
16
+ -webkit-font-smoothing: antialiased;
17
+ font-weight: 600;
18
+ line-height: 1.142em;
19
+ }
20
+
21
+ .sm-radio-group > * {
22
+ -webkit-box-flex: 1;
23
+ -ms-flex: 1 1 0px;
24
+ flex: 1 1 0;
25
+ }
26
+
27
+ .sm-radio-group:after {
28
+ content: "";
29
+ position: absolute;
30
+ top: 0;
31
+ right: 0;
32
+ bottom: 0;
33
+ left: 0;
34
+ border: 0.142em solid #57abd5;
35
+ border-radius: 999em;
36
+ pointer-events: none;
37
+ }
38
+
39
+ .sm-radio-group input[type="radio"] {
40
+ display: none;
41
+ }
42
+
43
+ .sm-radio-group input[type="radio"]:checked + label {
44
+ background-color: #57abd5;
45
+ color: #ffffff;
46
+ }
47
+
48
+ .sm-radio-group input[type="radio"]:checked + label:before {
49
+ content: "";
50
+ display: inline-block;
51
+ color: inherit;
52
+ position: relative;
53
+ top: .285em;
54
+ margin-right: .45em;
55
+ height: .8em;
56
+ width: .55em;
57
+ border-right: 2px solid;
58
+ border-bottom: 2px solid;
59
+ -webkit-transform: translateY(-50%) rotate(45deg);
60
+ transform: translateY(-50%) rotate(45deg);
61
+ }
62
+
63
+ .sm-radio-group label {
64
+ display: -webkit-box;
65
+ display: -ms-flexbox;
66
+ display: flex;
67
+ -webkit-box-align: center;
68
+ -ms-flex-align: center;
69
+ align-items: center;
70
+ -webkit-box-pack: center;
71
+ -ms-flex-pack: center;
72
+ justify-content: center;
73
+ position: relative;
74
+ cursor: pointer;
75
+ -webkit-transition: all .25s ease;
76
+ transition: all .25s ease;
77
+ color: inherit;
78
+ }
79
+
80
+ .sm-radio-group label:hover {
81
+ color: #416b7e;
82
+ }
83
+
84
+ .sm-radio-group label:nth-of-type(2) {
85
+ border-left: 2px solid #57abd5;
86
+ border-right: 2px solid #57abd5;
87
+ }
88
+
89
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group {
90
+ display: -webkit-box;
91
+ display: -ms-flexbox;
92
+ display: flex;
93
+ -webkit-box-orient: horizontal;
94
+ -webkit-box-direction: reverse;
95
+ -ms-flex-direction: row-reverse;
96
+ flex-direction: row-reverse;
97
+ -ms-flex-wrap: nowrap;
98
+ flex-wrap: nowrap;
99
+ -webkit-box-align: stretch;
100
+ -ms-flex-align: stretch;
101
+ align-items: stretch;
102
+ -webkit-box-pack: start;
103
+ -ms-flex-pack: start;
104
+ justify-content: flex-start;
105
+ }
106
+
107
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group > * {
108
+ -webkit-box-flex: 0;
109
+ -ms-flex: 0 0 33.33%;
110
+ flex: 0 0 33.33%;
111
+ }
112
+
113
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group input[type="radio"]:last-of-type:checked + label {
114
+ background: -webkit-gradient(linear, left top, right top, from(#3DAAE0), to(#D557BE));
115
+ background: linear-gradient(90deg, #3DAAE0 0%, #D557BE 100%);
116
+ }
117
+
118
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group input[type="radio"]:nth-of-type(1):checked ~ label:last-of-type, [id="customize-control-sm_coloration_level_control"] .sm-radio-group input[type="radio"]:nth-of-type(2):checked ~ label:last-of-type {
119
+ margin-right: -33.33%;
120
+ }
121
+
122
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group label:nth-of-type(1) {
123
+ -webkit-box-ordinal-group: 5;
124
+ -ms-flex-order: 4;
125
+ order: 4;
126
+ }
127
+
128
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group label:nth-of-type(2) {
129
+ -webkit-box-ordinal-group: 4;
130
+ -ms-flex-order: 3;
131
+ order: 3;
132
+ border-left: 2px solid #57abd5;
133
+ border-right: 2px solid #57abd5;
134
+ }
135
+
136
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group label:nth-of-type(3) {
137
+ -webkit-box-ordinal-group: 3;
138
+ -ms-flex-order: 2;
139
+ order: 2;
140
+ }
141
+
142
+ [id="customize-control-sm_coloration_level_control"] .sm-radio-group label:nth-of-type(4) {
143
+ -webkit-box-ordinal-group: 2;
144
+ -ms-flex-order: 1;
145
+ order: 1;
146
+ border-left: 2px solid #57abd5;
147
+ }
148
+
149
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize li.customize-control-sm_switch {
150
+ display: -webkit-box !important;
151
+ display: -ms-flexbox !important;
152
+ display: flex !important;
153
+ -webkit-box-align: center;
154
+ -ms-flex-align: center;
155
+ align-items: center;
156
+ -webkit-box-pack: justify;
157
+ -ms-flex-pack: justify;
158
+ justify-content: space-between;
159
+ padding-top: 42px;
160
+ padding-bottom: 42px;
161
+ }
162
+
163
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize li.customize-control-sm_switch .customize-control-title, [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize li.customize-control-sm_switch .separator.label {
164
+ display: inline-block;
165
+ }
166
+
167
+ .sm-switch {
168
+ display: -webkit-box;
169
+ display: -ms-flexbox;
170
+ display: flex;
171
+ -ms-flex-wrap: nowrap;
172
+ flex-wrap: nowrap;
173
+ -webkit-box-align: stretch;
174
+ -ms-flex-align: stretch;
175
+ align-items: stretch;
176
+ -webkit-box-pack: start;
177
+ -ms-flex-pack: start;
178
+ justify-content: flex-start;
179
+ overflow: hidden;
180
+ position: relative;
181
+ height: 2.428em;
182
+ max-width: 5.5em;
183
+ border-radius: 999em;
184
+ color: #ffffff;
185
+ font-size: 14px;
186
+ -webkit-font-smoothing: antialiased;
187
+ font-weight: 600;
188
+ line-height: 1.142em;
189
+ z-index: 10;
190
+ }
191
+
192
+ .sm-switch input[type="radio"] {
193
+ display: none;
194
+ }
195
+
196
+ .sm-switch input[type="radio"] + label {
197
+ display: -webkit-box;
198
+ display: -ms-flexbox;
199
+ display: flex;
200
+ -webkit-box-align: center;
201
+ -ms-flex-align: center;
202
+ align-items: center;
203
+ -webkit-box-flex: 0;
204
+ -ms-flex: 0 0 100%;
205
+ flex: 0 0 100%;
206
+ }
207
+
208
+ .sm-switch input[type="radio"] + label, .sm-switch input[type="radio"] + label:after {
209
+ -webkit-transition: all 0.2s ease-out;
210
+ transition: all 0.2s ease-out;
211
+ }
212
+
213
+ .sm-switch input[type="radio"]:checked + label {
214
+ pointer-events: none;
215
+ }
216
+
217
+ .sm-switch input[type="radio"]:nth-of-type(1) + label {
218
+ padding-left: 1.214em;
219
+ }
220
+
221
+ .sm-switch input[type="radio"]:nth-of-type(1) + label:after {
222
+ content: "";
223
+ position: absolute;
224
+ top: 0;
225
+ right: 0;
226
+ bottom: 0;
227
+ left: 0;
228
+ background-color: #57abd5;
229
+ z-index: -1;
230
+ }
231
+
232
+ .sm-switch input[type="radio"]:nth-of-type(1):not(:checked) + label {
233
+ -webkit-transform: translateX(-100%) translateX(2.125em);
234
+ transform: translateX(-100%) translateX(2.125em);
235
+ }
236
+
237
+ .sm-switch input[type="radio"]:nth-of-type(1):not(:checked) + label:after {
238
+ background: #cccccc;
239
+ -webkit-transform: translateX(100%) translateX(-2.125em);
240
+ transform: translateX(100%) translateX(-2.125em);
241
+ }
242
+
243
+ .sm-switch input[type="radio"]:nth-of-type(1):not(:checked) + label ~ label {
244
+ -webkit-transform: translateX(-100%);
245
+ transform: translateX(-100%);
246
+ }
247
+
248
+ .sm-switch input[type="radio"]:nth-of-type(1):checked + label ~ label {
249
+ -webkit-transform: translateX(-2.4em);
250
+ transform: translateX(-2.4em);
251
+ }
252
+
253
+ .sm-switch input[type="radio"]:nth-of-type(1):checked + label ~ label:before {
254
+ -webkit-transform: translateX(-100%) translateX(2.125em);
255
+ transform: translateX(-100%) translateX(2.125em);
256
+ }
257
+
258
+ .sm-switch input[type="radio"]:nth-of-type(2) + label {
259
+ -webkit-box-orient: horizontal;
260
+ -webkit-box-direction: reverse;
261
+ -ms-flex-direction: row-reverse;
262
+ flex-direction: row-reverse;
263
+ padding-right: 1em;
264
+ }
265
+
266
+ .sm-switch input[type="radio"]:nth-of-type(2) + label:before {
267
+ content: "";
268
+ position: absolute;
269
+ top: 0;
270
+ right: 0;
271
+ bottom: 0;
272
+ left: 0;
273
+ }
274
+
275
+ .sm-switch input[type="radio"]:nth-of-type(2) + label:after {
276
+ content: "";
277
+ display: block;
278
+ height: 2.142em;
279
+ width: 2.142em;
280
+ margin-right: auto;
281
+ margin-left: 0.125em;
282
+ border-radius: 50%;
283
+ background-color: #ffffff;
284
+ -webkit-box-shadow: 1px 2px 2px 0 rgba(23, 21, 21, 0.15);
285
+ box-shadow: 1px 2px 2px 0 rgba(23, 21, 21, 0.15);
286
+ pointer-events: none;
287
+ }
288
+
289
+ .wp-full-overlay-sidebar *, .wp-full-overlay-sidebar *:before, .wp-full-overlay-sidebar *:after {
290
+ -webkit-box-sizing: border-box;
291
+ box-sizing: border-box;
292
+ }
293
+
294
+ .iris-picker,
295
+ .iris-picker * {
296
+ -webkit-box-sizing: content-box;
297
+ box-sizing: content-box;
298
+ }
299
+
300
+ .wp-full-overlay-sidebar-content .accordion-section-content {
301
+ overflow: visible;
302
+ }
303
+
304
+ .control-section:not(.control-section-themes) .customize-control {
305
+ padding: 0;
306
+ width: 100%;
307
+ min-height: initial;
308
+ }
309
+
310
+ #customize-header-actions #customize-save-button-wrapper {
311
+ margin-top: 7px;
312
+ }
313
+
314
+ .wp-full-overlay-footer .devices button {
315
+ float: left;
316
+ border-radius: 0;
317
+ }
318
+
319
+ .customize-controls-close {
320
+ width: 48px;
321
+ height: 44px;
322
+ color: #7da9c3;
323
+ background: #ffffff;
324
+ border-top: none;
325
+ border-right-color: #e0e8ef;
326
+ }
327
+
328
+ .customize-controls-close:focus, .customize-controls-close:hover {
329
+ background: #f5fcff;
330
+ }
331
+
332
+ .customize-controls-close:before {
333
+ top: 0px;
334
+ }
335
+
336
+ #customize-controls .customize-info {
337
+ border-bottom-color: #e0e8ef;
338
+ }
339
+
340
+ .customize-panel-back, .customize-section-back {
341
+ height: 74px;
342
+ color: #7da9c3;
343
+ border-right-color: #e0e8ef;
344
+ }
345
+
346
+ .customize-panel-back:hover, .customize-panel-back:focus, .customize-section-back:hover, .customize-section-back:focus {
347
+ border-left-color: #f5fcff;
348
+ background: #f5fcff;
349
+ }
350
+
351
+ #customize-theme-controls .theme * {
352
+ -webkit-box-sizing: content-box;
353
+ box-sizing: content-box;
354
+ }
355
+
356
+ #customize-theme-controls .accordion-section-content {
357
+ padding: 17px;
358
+ }
359
+
360
+ #customize-theme-controls .customize-section-title {
361
+ margin-top: -17px;
362
+ margin-right: -17px;
363
+ }
364
+
365
+ #customize-theme-controls #accordion-section-add_menu {
366
+ border-bottom: none;
367
+ }
368
+
369
+ #customize-theme-controls #accordion-section-add_menu .add-menu-toggle {
370
+ float: none;
371
+ }
372
+
373
+ #customize-theme-controls .customize-pane-child.open {
374
+ height: 100%;
375
+ }
376
+
377
+ #customize-controls .description {
378
+ font-size: 12px;
379
+ font-weight: 300;
380
+ font-style: normal;
381
+ line-height: 1.6;
382
+ color: #4d7b90;
383
+ text-indent: 0;
384
+ }
385
+
386
+ .customize-control-description {
387
+ margin-top: 6px;
388
+ }
389
+
390
+ .customize-control {
391
+ margin-bottom: 24px;
392
+ }
393
+
394
+ #accordion-section-themes + .control-section {
395
+ border-top: none;
396
+ }
397
+
398
+ #customize-controls .panel-meta.customize-info .accordion-section-title {
399
+ border-top: none;
400
+ height: 74px;
401
+ }
402
+
403
+ .button-controls:after {
404
+ content: " ";
405
+ display: table;
406
+ clear: both;
407
+ }
408
+
409
+ .wp-core-ui .button:not(.theme-details):not(.collapse-sidebar):not(.wp-color-result),
410
  .wp-core-ui .button-primary,
411
+ .wp-core-ui .button-secondary {
412
+ width: auto;
413
+ padding-left: 15px;
414
+ padding-right: 15px;
415
+ font-weight: 400;
416
+ color: #F5FCFF;
417
+ text-shadow: none;
418
+ border: none;
419
+ background: #AED2E5;
420
+ -webkit-box-shadow: 0px 2px 0px 0px #8DBED7;
421
+ box-shadow: 0px 2px 0px 0px #8DBED7;
422
+ border-radius: 4px;
423
+ }
424
 
425
+ .wp-core-ui .button:not(.theme-details):not(.collapse-sidebar):not(.wp-color-result):hover,
 
426
  .wp-core-ui .button-primary:hover,
427
+ .wp-core-ui .button-secondary:hover {
428
+ color: white;
429
+ text-shadow: none;
430
+ background: #98C6DD;
431
+ -webkit-box-shadow: 0px 2px 0px 0px #74A7C2;
432
+ box-shadow: 0px 2px 0px 0px #74A7C2;
433
+ }
434
+
435
+ .wp-core-ui #customize-header-actions .button-primary {
436
+ background: #73C5EE;
437
+ -webkit-box-shadow: 0px 2px 0px 0px #57ABD5;
438
+ box-shadow: 0px 2px 0px 0px #57ABD5;
439
+ }
440
+
441
+ .wp-core-ui #customize-header-actions .button-primary:hover {
442
+ background: #58B0DD;
443
+ -webkit-box-shadow: 0px 2px 0px 0px #3F8AAF;
444
+ box-shadow: 0px 2px 0px 0px #3F8AAF;
445
+ }
446
+
447
+ .wp-core-ui #customize-header-actions .button-primary.has-next-sibling {
448
+ border-right: 1px solid #57ABD5;
449
+ }
450
+
451
+ .wp-core-ui #customize-header-actions .button-primary:disabled {
452
+ color: white !important;
453
+ background: #AED2E5 !important;
454
+ opacity: 0.7;
455
+ -webkit-box-shadow: 0px 2px 0px 0px #8db5ca !important;
456
+ box-shadow: 0px 2px 0px 0px #8db5ca !important;
457
+ }
458
+
459
+ .wp-core-ui #customize-header-actions .button-primary:disabled.has-next-sibling {
460
+ border-right: none;
461
+ }
462
+
463
+ .wp-core-ui .reset_section,
464
+ .wp-core-ui .reset_panel {
465
+ width: 100%;
466
+ height: 4em;
467
+ display: block;
468
+ margin: 0px 0 25px;
469
+ }
470
+
471
+ .wp-core-ui .reset_panel {
472
+ margin-top: 10px;
473
+ }
474
+
475
+ .separator.label {
476
+ display: block;
477
+ font-size: 14px;
478
+ line-height: 24px;
479
+ font-weight: 500;
480
+ }
481
+
482
+ .customize-control-title, .separator.label {
483
+ color: #2A3B44;
484
+ }
485
+
486
+ .separator.section:before, .separator.sub-section:before {
487
+ content: "";
488
+ position: absolute;
489
+ top: 0;
490
+ bottom: 0;
491
+ left: -18px;
492
+ right: -18px;
493
+ z-index: -1;
494
+ }
495
+
496
+ .separator.label {
497
+ font-weight: 500;
498
+ }
499
+
500
+ .separator.large {
501
+ margin-top: 12px;
502
+ font-size: 16px;
503
+ color: #39474D;
504
+ }
505
+
506
+ .separator.section {
507
+ position: relative;
508
+ padding: 14px 0;
509
+ margin-bottom: 0;
510
+ background: none;
511
+ border: none;
512
+ }
513
+
514
+ .separator.section[id*="layout"] {
515
+ margin-top: 0;
516
+ }
517
+
518
+ .separator.section[id*="layout"]:before {
519
+ border: none;
520
+ }
521
+
522
+ .separator.section:before {
523
+ border: 1px solid #e0e8ef;
524
+ background-color: #ffffff;
525
+ -webkit-box-shadow: 0px 1px 0px 0px #DFE8EF;
526
+ box-shadow: 0px 1px 0px 0px #DFE8EF;
527
+ }
528
+
529
+ .separator.sub-section {
530
+ position: relative;
531
+ padding: 12px 0;
532
+ }
533
+
534
+ .separator.sub-section:before {
535
+ border-top: 1px solid #e0e8ef;
536
+ border-bottom: 1px solid #e0e8ef;
537
+ background-color: #f6fbff;
538
+ }
539
+
540
+ .separator.sub-section + span {
541
+ margin-top: 20px;
542
+ font-style: normal;
543
+ }
544
+
545
+ .section-navigation-wrapper {
546
+ position: relative;
547
+ height: 43px;
548
+ margin: -15px -12px 0 -12px;
549
+ margin-right: -17px;
550
+ margin-left: -17px;
551
+ }
552
+
553
+ .section-navigation {
554
+ display: -webkit-box;
555
+ display: -ms-flexbox;
556
+ display: flex;
557
+ margin-top: -1px;
558
+ clear: both;
559
+ border-top: 1px solid #e0e8ef;
560
+ }
561
+
562
+ .section-navigation a {
563
+ -webkit-box-flex: 1;
564
+ -ms-flex: 1 1 auto;
565
+ flex: 1 1 auto;
566
+ display: block;
567
+ padding: 12px 0;
568
+ color: #3b484e;
569
+ background-color: #ffffff;
570
+ border-bottom: 1px solid #e0e8ef;
571
+ border-right: 1px solid #e0e8ef;
572
+ text-align: center;
573
+ text-decoration: none;
574
+ -webkit-transition: background-color .15s ease-in-out;
575
+ transition: background-color .15s ease-in-out;
576
+ }
577
+
578
+ .section-navigation a:last-child {
579
+ border-right: 0;
580
+ }
581
+
582
+ #customize-controls .customize-info.is-sticky.is-sticky,
583
+ #customize-controls .customize-section-title.is-sticky.is-sticky {
584
+ top: 40px;
585
+ }
586
+
587
+ #customize-controls .customize-info.is-in-view.is-in-view,
588
+ #customize-controls .customize-section-title.is-in-view.is-in-view {
589
+ -webkit-box-shadow: none;
590
+ box-shadow: none;
591
+ }
592
+
593
+ #customize-controls .has-nav .customize-info,
594
+ #customize-controls .has-nav .customize-section-title {
595
+ margin-right: -12px;
596
+ }
597
+
598
+ #customize-controls .customize-section-title.customize-section-title {
599
+ border-bottom: 0;
600
+ }
601
+
602
+ .customize-section-description-container.section-meta.has-nav {
603
+ margin-bottom: 0;
604
+ }
605
+
606
+ .font-options__wrapper {
607
+ position: relative;
608
+ }
609
+
610
+ .font-options__wrapper:after {
611
+ content: "";
612
+ position: absolute;
613
+ top: 90%;
614
+ left: 0;
615
+ right: 0;
616
+ z-index: 0;
617
+ display: block;
618
+ height: 30px;
619
+ }
620
+
621
+ .font-options__head {
622
+ display: -webkit-box;
623
+ display: -ms-flexbox;
624
+ display: flex;
625
+ -webkit-box-pack: justify;
626
+ -ms-flex-pack: justify;
627
+ justify-content: space-between;
628
+ }
629
+
630
+ .font-options__head.font-options__head {
631
+ -webkit-appearance: none;
632
+ text-overflow: ellipsis;
633
+ white-space: nowrap;
634
+ }
635
+
636
+ .font-options__font-title {
637
+ margin-right: 26px;
638
+ margin-left: 10px;
639
+ font-size: 12px;
640
+ line-height: 20px;
641
+ font-weight: 300;
642
+ color: #98c6dd;
643
+ text-overflow: ellipsis;
644
+ overflow: hidden;
645
+ white-space: nowrap;
646
+ }
647
+
648
+ .font-options__options-list {
649
+ position: absolute;
650
+ top: calc(100% + 6px);
651
+ left: -6px;
652
+ right: -6px;
653
+ z-index: 2;
654
+ display: block;
655
+ padding: 10px;
656
+ border: 1px solid #dfe8ef;
657
+ border-radius: 5px;
658
+ background-color: #ffffff;
659
+ opacity: 0;
660
+ display: none;
661
+ -webkit-transition: opacity .15s linear;
662
+ transition: opacity .15s linear;
663
+ }
664
+
665
+ .font-options__options-list:last-child {
666
+ margin-bottom: 0;
667
+ }
668
+
669
+ .font-options__options-list:before, .font-options__options-list:after {
670
+ content: "";
671
+ position: absolute;
672
+ top: -20px;
673
+ right: 25px;
674
+ height: 0;
675
+ width: 0;
676
+ border: solid transparent;
677
+ z-index: 10;
678
+ }
679
+
680
+ .font-options__options-list:before {
681
+ border-bottom-color: white;
682
+ border-width: 10px;
683
+ z-index: 11;
684
+ }
685
+
686
+ .font-options__options-list:after {
687
+ border-bottom-color: rgba(0, 0, 0, 0.075);
688
+ border-width: 12px;
689
+ top: -24px;
690
+ right: 23px;
691
+ }
692
+
693
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap:after {
694
+ content: "";
695
+ position: absolute;
696
+ bottom: 100%;
697
+ right: 12px;
698
+ border-collapse: separate;
699
+ width: 0;
700
+ height: 0;
701
+ border-width: 0 9px 9px 9px;
702
+ border-style: solid;
703
+ border-color: transparent transparent #fff transparent;
704
+ }
705
+
706
+ .font-options__head, .wp-full-overlay-sidebar-content .customize-control input[type=text]:not(#_customize-input-wpcom_custom_css_content_width_control):not(.wp-color-picker),
707
  .wp-full-overlay-sidebar-content .customize-control input[type=checkbox],
708
  .wp-full-overlay-sidebar-content .customize-control input[type=password],
709
  .wp-full-overlay-sidebar-content .customize-control input[type=color],
721
  .wp-full-overlay-sidebar-content .customize-control input[type=search],
722
  .wp-full-overlay-sidebar-content .customize-control select,
723
  .wp-full-overlay-sidebar-content .customize-control textarea,
724
+ .wp-full-overlay-sidebar-content .customize-control input.range-value[type="number"], ul.font-options__options-list .select2-container .select2-selection--single, #customize-theme-controls .select2-container .select2-selection--multiple {
725
+ width: 100%;
726
+ height: 44px;
727
+ padding: 10px 14px;
728
+ background: #FFFFFF;
729
+ border: 2px solid #B8DAEB;
730
+ border-radius: 4px;
731
+ font-size: 14px;
732
+ line-height: 1.5;
733
+ color: #416B7E;
734
+ outline: 0;
735
+ }
736
+
737
+ .font-options__head:focus, .wp-full-overlay-sidebar-content .customize-control input:focus[type=text]:not(#_customize-input-wpcom_custom_css_content_width_control):not(.wp-color-picker),
738
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=checkbox],
739
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=password],
740
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=color],
741
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=date],
742
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=datetime],
743
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=datetime-local],
744
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=email],
745
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=month],
746
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=number],
747
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=radio],
748
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=tel],
749
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=time],
750
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=url],
751
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=week],
752
+ .wp-full-overlay-sidebar-content .customize-control input:focus[type=search],
753
  .wp-full-overlay-sidebar-content .customize-control select:focus,
754
  .wp-full-overlay-sidebar-content .customize-control textarea:focus,
755
+ .wp-full-overlay-sidebar-content .customize-control input.range-value:focus[type="number"], ul.font-options__options-list .select2-container .select2-selection--single:focus, #customize-theme-controls .select2-container .select2-selection--multiple:focus {
756
+ border-color: #73C5EE;
757
+ -webkit-box-shadow: none;
758
+ box-shadow: none;
759
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
760
 
761
+ .font-options__head,
762
+ .wp-full-overlay-sidebar-content .customize-control select, ul.font-options__options-list .select2-container .select2-selection--single, #customize-theme-controls .select2-container .select2-selection--multiple {
763
+ width: 100%;
764
+ -webkit-appearance: button;
765
+ -moz-appearance: none;
766
+ font-weight: 600;
767
+ background: white url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE1cHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTUgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weS0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjU2LjAwMDAwMCwgLTM4Ni4wMDAwMDApIiBmaWxsPSIjOThDNkRFIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iVGl0bGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2LjAwMDAwMCwgMjE5LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1TZWxlY3QtQ29weSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU2VsZWN0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMjcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI1NC40ODEyLDE4IEwyNTYsMTkuNTE0IEwyNDguNSwyNyBMMjQxLDE5LjUxNCBMMjQyLjUxODgsMTggTDI0OC41LDIzLjk2NzIgTDI1NC40ODEyLDE4IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;
768
+ background-position: right 16px top 16px;
769
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
770
 
771
+ .font-options__head[multiple], .wp-full-overlay-sidebar-content .customize-control select[multiple], ul.font-options__options-list .select2-container .select2-selection--single[multiple], #customize-theme-controls .select2-container .select2-selection--multiple[multiple] {
772
+ background: white;
773
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
774
 
775
+ .wp-full-overlay-sidebar-content .customize-control input[type=text],
776
+ .wp-full-overlay-sidebar-content .customize-control textarea {
777
+ font-size: 13px;
778
+ }
779
 
780
+ .wp-full-overlay-sidebar-content .customize-control textarea {
781
+ height: auto;
782
+ }
783
 
784
+ .wp-full-overlay-sidebar-content .customize-control input[type=checkbox],
785
+ .wp-full-overlay-sidebar-content .customize-control input[type=radio] {
786
+ width: 22px;
787
+ height: 22px;
788
+ }
789
 
790
+ .wp-full-overlay-sidebar-content .customize-control input[type=checkbox]:checked,
791
+ .wp-full-overlay-sidebar-content .customize-control input[type=radio]:checked {
792
+ background: #73C5EE;
793
+ border-color: #5AB9E8;
794
+ }
795
 
796
+ .wp-full-overlay-sidebar-content .customize-control input[type=checkbox]:checked:before,
797
+ .wp-full-overlay-sidebar-content .customize-control input[type=radio]:checked:before {
798
+ color: white;
799
+ margin: -1px 0 0 -2px;
800
+ }
801
 
802
+ .wp-full-overlay-sidebar-content .customize-control .awesome_preset input[type=radio]:checked {
803
+ background: transparent;
804
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
805
 
806
+ .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control) label:not(:only-of-type),
807
+ .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control) > .customize-inside-control-row:not(:only-of-type), .wp-full-overlay-sidebar-content .customize-control.customize-control-radio label:not(:only-of-type),
808
+ .wp-full-overlay-sidebar-content .customize-control.customize-control-radio > .customize-inside-control-row:not(:only-of-type) {
809
+ margin-left: 30px;
810
+ padding-top: 0;
811
+ padding-bottom: 0;
812
+ display: inline-block;
813
+ width: calc(49% - 30px);
814
+ text-indent: -6px;
815
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
816
 
817
+ .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control) label, .wp-full-overlay-sidebar-content .customize-control.customize-control-radio label {
818
+ color: #416B7E;
819
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
 
821
+ [id*="divider"] + .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox:not(#customize-control-jetpack_css_mode_control), [id*="divider"] + .wp-full-overlay-sidebar-content .customize-control.customize-control-radio {
822
+ margin-top: 0;
823
+ }
824
+
825
+ .wp-full-overlay-sidebar-content .customize-control input[type=radio] {
826
+ border-radius: 50%;
827
+ }
828
+
829
+ .wp-full-overlay-sidebar-content .customize-control input[type=radio]:checked:before {
830
+ content: none;
831
+ }
832
+
833
+ .customize-control-html + .wp-full-overlay-sidebar-content .customize-control.customize-control-checkbox {
834
+ margin-top: -24px;
835
+ }
836
+
837
+ .wp-full-overlay-sidebar-content .customize-control.customize-control-radio label,
838
+ .wp-full-overlay-sidebar-content .customize-control.customize-control-radio .customize-inside-control-row {
839
+ margin-top: 12px;
840
+ }
841
+
842
+ .wp-full-overlay-sidebar-content .customize-control.customize-control-radio#customize-control-changeset_status .customize-inside-control-row {
843
+ margin-top: 0;
844
+ text-indent: 0;
845
+ }
846
+
847
+ .wp-full-overlay-sidebar-content .customize-control input[type="range"] {
848
+ width: 65%;
849
+ }
850
+
851
+ .wp-full-overlay-sidebar-content .customize-control input[type="range"] {
852
+ position: relative;
853
+ -webkit-appearance: none;
854
+ width: calc(100% - 55px);
855
+ height: 22px;
856
+ overflow: hidden;
857
+ outline: none;
858
+ background: none;
859
+ }
860
+
861
+ .wp-full-overlay-sidebar-content .customize-control input[type="range"]:before {
862
+ content: " ";
863
+ position: absolute;
864
+ top: 8px;
865
+ left: 0;
866
+ height: 6px;
867
+ width: 100%;
868
+ background: #DFE8EF;
869
+ -webkit-box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, 0.3);
870
+ box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, 0.3);
871
+ border-radius: 10px;
872
+ }
873
+
874
+ .wp-full-overlay-sidebar-content .customize-control input[type="range"]::-webkit-slider-thumb {
875
+ -webkit-appearance: none;
876
+ width: 22px;
877
+ height: 22px;
878
+ background: #27ae60;
879
+ position: relative;
880
+ z-index: 3;
881
+ background: #FFFFFF;
882
+ border: 2px solid #B8DAEB;
883
+ border-radius: 4px;
884
+ }
885
+
886
+ .wp-full-overlay-sidebar-content .customize-control input[type="range"]::-webkit-slider-thumb:before {
887
+ content: "..";
888
+ position: absolute;
889
+ left: 5px;
890
+ top: -5px;
891
+ color: #B8DAEB;
892
+ font-size: 1em;
893
+ letter-spacing: 1px;
894
+ }
895
+
896
+ .wp-full-overlay-sidebar-content .customize-control input[type="range"]::-webkit-slider-thumb:after {
897
+ content: " ";
898
+ width: calc(100% - 55px);
899
+ height: 6px;
900
+ position: absolute;
901
+ z-index: 1;
902
+ right: 20px;
903
+ top: 6px;
904
+ background: #73C5EE;
905
+ }
906
+
907
+ .wp-full-overlay-sidebar-content .customize-control input[type="number"].range-value {
908
+ min-width: 40px;
909
+ max-width: 80px;
910
+ width: auto;
911
+ height: 30px;
912
+ top: -5px;
913
+ float: right;
914
+ padding: 4px 0px 5px 0px;
915
+ margin-left: 10px;
916
+ font-size: 13px;
917
+ line-height: 1;
918
+ text-align: center;
919
+ }
920
+
921
+ .wp-full-overlay-sidebar-content .customize-control input[type=number]::-webkit-inner-spin-button,
922
+ .wp-full-overlay-sidebar-content .customize-control input[type=number]::-webkit-outer-spin-button {
923
+ -webkit-appearance: none;
924
+ margin: 0;
925
+ }
926
+
927
+ .customize-control-color {
928
+ display: block;
929
+ }
930
+
931
+ .customize-control-color .customize-control-title, .customize-control-color .separator.label {
932
+ float: left;
933
+ }
934
+
935
+ .customize-control-color .wp-picker-container {
936
+ position: relative;
937
+ float: right;
938
+ top: -3px;
939
+ }
940
+
941
+ .customize-control-color .wp-picker-container .wp-picker-holder {
942
+ position: relative;
943
+ }
944
+
945
+ .customize-control-color .wp-picker-container .wp-color-result,
946
+ .customize-control-color .wp-picker-container .wp-color-result.button {
947
+ top: 0;
948
+ height: 30px;
949
+ width: 40px;
950
+ margin: 0;
951
+ padding: 0;
952
+ border-radius: 4px;
953
+ background: #2ECC71;
954
+ border: 2px solid #B8DAEB;
955
+ -webkit-box-shadow: none;
956
+ box-shadow: none;
957
+ }
958
+
959
+ .customize-control-color .wp-picker-container .wp-color-result:after,
960
+ .customize-control-color .wp-picker-container .wp-color-result .wp-color-result-text,
961
+ .customize-control-color .wp-picker-container .wp-color-result.button:after,
962
+ .customize-control-color .wp-picker-container .wp-color-result.button .wp-color-result-text {
963
+ display: none;
964
+ }
965
+
966
+ .customize-control-color .wp-picker-container .iris-picker {
967
+ position: absolute;
968
+ top: 40px;
969
+ right: 0;
970
+ z-index: 1000;
971
+ width: 275px !important;
972
+ border-top: none;
973
+ border-color: #DFDFDE;
974
+ border-radius: 0 0 3px 3px;
975
+ border: none;
976
+ background: white;
977
+ }
978
+
979
+ .customize-control-color .wp-picker-container .iris-picker, .customize-control-color .wp-picker-container .iris-picker * {
980
+ -webkit-box-sizing: content-box;
981
+ box-sizing: content-box;
982
+ }
983
+
984
+ .customize-control-color .wp-picker-container .iris-picker .iris-square {
985
+ width: 215px !important;
986
+ height: 173px !important;
987
+ margin-right: 0;
988
+ }
989
+
990
+ .customize-control-color .wp-picker-container .iris-picker .iris-strip {
991
+ float: right;
992
+ -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 1px inset;
993
+ box-shadow: rgba(0, 0, 0, 0.4) 0 1px 1px inset;
994
+ }
995
+
996
+ .customize-control-color .wp-picker-container .iris-picker .iris-strip .ui-slider-handle {
997
+ border-color: #aaa !important;
998
+ opacity: 1;
999
+ -webkit-box-shadow: none;
1000
+ box-shadow: none;
1001
+ }
1002
+
1003
+ .customize-control-color .wp-picker-container .iris-picker .iris-palette {
1004
+ width: 24px !important;
1005
+ height: 24px !important;
1006
+ border-radius: 50px;
1007
+ -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 1px inset;
1008
+ box-shadow: rgba(0, 0, 0, 0.4) 0 1px 1px inset;
1009
+ }
1010
+
1011
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap {
1012
+ position: absolute;
1013
+ z-index: 1000;
1014
+ top: 35px;
1015
+ right: 0;
1016
+ width: 275px;
1017
+ padding: 9px 12px;
1018
+ background: white;
1019
+ border: none;
1020
+ border-radius: 3px 3px 0 0;
1021
+ }
1022
+
1023
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.wp-color-picker {
1024
+ float: left;
1025
+ width: 100px;
1026
+ font-size: 13px;
1027
+ text-align: left;
1028
+ margin: 0;
1029
+ padding: 6px 12px;
1030
+ height: auto;
1031
+ }
1032
+
1033
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.button {
1034
+ float: right;
1035
+ padding: 4px 12px;
1036
+ height: 30px;
1037
+ }
1038
+
1039
+ .customize-control-font:last-child {
1040
+ margin-bottom: 150px;
1041
+ }
1042
+
1043
+ #accordion-section-live_css_edit_section .customize-section-title {
1044
+ margin-top: -13px;
1045
+ border-bottom: 1px solid #ddd;
1046
+ }
1047
+
1048
+ #accordion-section-live_css_edit_section #css_editor {
1049
+ top: 70px;
1050
+ border-top: 10px solid white;
1051
+ overflow: visible;
1052
+ }
1053
+
1054
+ #accordion-section-live_css_edit_section #css_editor:before {
1055
+ content: "";
1056
+ width: 48px;
1057
+ height: 10px;
1058
+ display: block;
1059
+ background: #e8e8e8;
1060
+ top: -10px;
1061
+ position: absolute;
1062
+ z-index: 10000000;
1063
+ left: 0;
1064
+ }
1065
+
1066
+ #accordion-section-live_css_edit_section .ace_scroller {
1067
+ padding-left: 10px;
1068
+ }
1069
+
1070
+ .wp-full-overlay.editor_opened {
1071
+ margin-left: 500px;
1072
+ }
1073
+
1074
+ .wp-full-overlay.editor_opened #customize-controls {
1075
+ width: 500px;
1076
+ }
1077
+
1078
+ .wp-full-overlay.editor_opened.collapsed #customize-controls {
1079
+ width: 300px;
1080
+ }
1081
+
1082
+ .customize-control-media .current,
1083
+ .customize-control-site_icon .current,
1084
+ li#customize-control-site_logo .current {
1085
+ margin-bottom: 10px;
1086
+ min-height: 44px;
1087
+ background: #F5FCFF;
1088
+ border: 2px solid #B8DAEB;
1089
+ border-radius: 4px;
1090
+ }
1091
+
1092
+ .customize-control-media .current .container, .customize-control-media .current span,
1093
+ .customize-control-site_icon .current .container,
1094
+ .customize-control-site_icon .current span,
1095
+ li#customize-control-site_logo .current .container,
1096
+ li#customize-control-site_logo .current span {
1097
+ border: none;
1098
+ }
1099
+
1100
+ .customize-control-media .inner, .customize-control-media .current span,
1101
+ .customize-control-site_icon .inner,
1102
+ .customize-control-site_icon .current span,
1103
+ li#customize-control-site_logo .inner,
1104
+ li#customize-control-site_logo .current span {
1105
+ font-size: 13px;
1106
+ color: #98C6DD;
1107
+ }
1108
+
1109
+ .customize-control-media .inner,
1110
+ .customize-control-site_icon .inner,
1111
+ li#customize-control-site_logo .inner {
1112
+ line-height: 1.4;
1113
+ }
1114
+
1115
+ .customize-control-media .thumbnail-image,
1116
+ .customize-control-site_icon .thumbnail-image,
1117
+ li#customize-control-site_logo .thumbnail-image {
1118
+ padding: 14px;
1119
+ text-align: center;
1120
+ }
1121
+
1122
+ .customize-control-media .thumbnail-image img,
1123
+ .customize-control-site_icon .thumbnail-image img,
1124
+ li#customize-control-site_logo .thumbnail-image img {
1125
+ width: auto;
1126
+ }
1127
+
1128
+ .customize-control-media .actions,
1129
+ .customize-control-site_icon .actions,
1130
+ li#customize-control-site_logo .actions {
1131
+ margin-bottom: 0;
1132
+ }
1133
+
1134
+ .customize-control-typography select, .customize-control-typography select {
1135
+ margin-bottom: 10px;
1136
+ }
1137
+
1138
+ .customize-control-typography .description, .customize-control-typography .description {
1139
+ margin-top: -3px;
1140
+ }
1141
+
1142
+ .customize-control-typography ul li, .customize-control-typography ul li {
1143
+ width: 100%;
1144
+ margin: 0;
1145
+ }
1146
+
1147
+ .default-preset-button {
1148
+ background-color: #F5F6F6;
1149
+ float: right;
1150
+ padding: 1px 8px;
1151
+ border-radius: 3px;
1152
+ border: 1px solid #CBCBCB;
1153
+ margin-right: 4px;
1154
+ font-family: "Open Sans",sans-serif;
1155
+ font-size: 13px;
1156
+ }
1157
+
1158
+ .customize-control-preset .description {
1159
+ margin-right: 5px;
1160
+ font-style: normal;
1161
+ }
1162
+
1163
+ .customify_preset.radio_buttons .customify_radio_button {
1164
+ border: none;
1165
+ display: inline-block;
1166
+ padding: 2px;
1167
+ margin: 3px;
1168
+ position: relative;
1169
+ overflow: hidden;
1170
+ height: auto;
1171
+ }
1172
+
1173
+ .customify_preset.radio_buttons .customify_radio_button input[type="radio"] {
1174
+ opacity: 0;
1175
+ width: 100%;
1176
+ height: 100%;
1177
+ position: absolute;
1178
+ z-index: 9999;
1179
+ }
1180
+
1181
+ .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked + label {
1182
+ background-color: #ebebeb;
1183
+ }
1184
+
1185
+ .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked + label:before {
1186
+ content: '>';
1187
+ color: inherit;
1188
+ }
1189
+
1190
+ .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked + label:after {
1191
+ content: '<';
1192
+ color: inherit;
1193
+ }
1194
+
1195
+ .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked:before {
1196
+ opacity: 0;
1197
+ }
1198
+
1199
+ .customify_preset.radio_buttons .customify_radio_button label {
1200
+ position: relative;
1201
+ z-index: 999;
1202
+ border-left: 4px solid;
1203
+ }
1204
+
1205
+ .customify_preset .awesome_preset {
1206
+ width: 45%;
1207
+ position: relative;
1208
+ display: inline-block;
1209
+ text-align: center;
1210
+ color: white;
1211
+ margin-top: 5px;
1212
+ margin-bottom: 25px;
1213
+ -webkit-transition: all 0.2s;
1214
+ transition: all 0.2s;
1215
+ }
1216
+
1217
+ .customify_preset .awesome_preset:hover {
1218
+ opacity: 0.9;
1219
+ }
1220
+
1221
+ .customify_preset .awesome_preset:before {
1222
+ content: '';
1223
+ position: absolute;
1224
+ top: 1px;
1225
+ left: 1px;
1226
+ right: 1px;
1227
+ bottom: 1px;
1228
+ border: 1px solid #FFF;
1229
+ background: transparent;
1230
+ opacity: .5;
1231
+ border-radius: 4px;
1232
+ z-index: 5;
1233
+ }
1234
+
1235
+ .customify_preset .awesome_preset .preset-wrap .preset-color {
1236
+ height: 128px;
1237
+ border-radius: 4px 4px 0 0;
1238
+ padding: 17px 0 27px;
1239
+ }
1240
+
1241
+ .customify_preset .awesome_preset .preset-wrap .preset-color .first-font {
1242
+ display: inline-block;
1243
+ width: 100%;
1244
+ font-size: 55px;
1245
+ line-height: 1;
1246
+ }
1247
+
1248
+ .customify_preset .awesome_preset .preset-wrap .preset-color .secondary-font {
1249
+ display: inline-block;
1250
+ width: 100%;
1251
+ font-size: 20px;
1252
+ line-height: 1;
1253
+ margin-top: 8px;
1254
+ }
1255
+
1256
+ .customify_preset .awesome_preset .preset-wrap .preset-name {
1257
+ position: relative;
1258
+ font-size: 11px;
1259
+ text-transform: UPPERCASE;
1260
+ border-radius: 0 0 4px 4px;
1261
+ padding: 1px;
1262
+ }
1263
+
1264
+ .customify_preset .awesome_preset .preset-wrap .preset-name:before {
1265
+ content: '';
1266
+ position: absolute;
1267
+ border-color: inherit;
1268
+ border: 10px solid;
1269
+ border-left-color: transparent;
1270
+ border-right-color: transparent;
1271
+ border-top: transparent;
1272
+ top: -10px;
1273
+ border-bottom-color: inherit;
1274
+ left: 40%;
1275
+ }
1276
+
1277
+ .customify_preset .awesome_preset:nth-child(odd) {
1278
+ margin-right: 7%;
1279
+ }
1280
+
1281
+ .customify_preset .awesome_preset input[type=radio] {
1282
+ height: 100%;
1283
+ width: 100%;
1284
+ position: absolute;
1285
+ border: 0;
1286
+ -webkit-box-shadow: none;
1287
+ box-shadow: none;
1288
+ color: #006505;
1289
+ background-color: transparent;
1290
+ border-radius: 0;
1291
+ margin: 0;
1292
+ display: inline-block;
1293
+ top: 0;
1294
+ left: 0;
1295
+ z-index: 10;
1296
+ }
1297
+
1298
+ .customify_preset .awesome_preset input[type=radio]:checked:before {
1299
+ position: absolute;
1300
+ height: 25px;
1301
+ width: 25px;
1302
+ top: -13px;
1303
+ right: -14px;
1304
+ background: #FFF;
1305
+ z-index: 1;
1306
+ }
1307
+
1308
+ .customify_preset .awesome_preset input[type=radio]:checked:after {
1309
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
1310
+ filter: alpha(opacity=0);
1311
+ content: '';
1312
+ position: absolute;
1313
+ width: 26px;
1314
+ height: 26px;
1315
+ border-radius: 50%;
1316
+ top: -5px;
1317
+ right: -5px;
1318
+ z-index: 10;
1319
+ background: #73C5EE url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEzcHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTMgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgLTQwOC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1DaGVja2JveC1Db3B5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNy4wMDAwMDAsIDI0OS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNoZWNrYm94IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDM4NDk1LDE2IEwxNy4xMTYxMzc1LDguOTIxNDg3NiBMMTUuMTk0NjQ5OCw3IEwxMC4wMzg0OTUsMTIuMTU1MDY3NCBMNi45MjE0ODc2LDkuMDM4OTI5OTcgTDUsMTAuOTYwNDE3NiBMMTAuMDM4NDk1LDE2IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;
1320
+ background-position: center center;
1321
+ }
1322
+
1323
+ .customify_radio_image {
1324
+ display: inline-block;
1325
+ }
1326
+
1327
+ .customify_radio_image label {
1328
+ display: block;
1329
+ float: left;
1330
+ margin-right: 10px;
1331
+ position: relative;
1332
+ }
1333
+
1334
+ .customify_radio_image label input[type=radio] {
1335
+ position: absolute;
1336
+ top: 0;
1337
+ bottom: 0;
1338
+ left: 0;
1339
+ right: 0;
1340
+ width: 100%;
1341
+ height: 100%;
1342
+ visibility: hidden;
1343
+ }
1344
+
1345
+ .customify_radio_image label input[type=radio] img {
1346
+ cursor: pointer;
1347
+ border: 2px solid transparent;
1348
+ }
1349
+
1350
+ .customify_radio_image label input[type=radio]:checked + img {
1351
+ border: 3px solid #73C5EE;
1352
+ }
1353
+
1354
+ .customify_ace_editor {
1355
+ display: block;
1356
+ min-height: 200px;
1357
+ border: 1px solid #ddd;
1358
+ }
1359
+
1360
+ .customize-control-custom_background .hide {
1361
+ display: none;
1362
+ }
1363
+
1364
+ .customize-control-custom_background .upload_button_div {
1365
+ margin: 10px 0;
1366
+ }
1367
+
1368
+ .customize-control-custom_background .upload_button_div > * {
1369
+ margin-right: 10px;
1370
+ }
1371
+
1372
+ .customize-control-custom_background .preview_screenshot {
1373
+ text-align: center;
1374
+ margin: 10px 0;
1375
+ }
1376
+
1377
+ .customize-control-custom_background .preview_screenshot img {
1378
+ border: 2px solid #ccc;
1379
+ }
1380
+
1381
+ #customify_import_demo_data_button {
1382
+ width: 70%;
1383
+ text-align: center;
1384
+ padding: 10px;
1385
+ display: inline-block;
1386
+ height: auto;
1387
+ margin: 0 15% 10% 15%;
1388
+ }
1389
+
1390
+ .import_step_note {
1391
+ margin: 5px;
1392
+ width: 100%;
1393
+ display: inline-block;
1394
+ }
1395
+
1396
+ .import_step_note:before {
1397
+ content: "\1F449";
1398
+ }
1399
+
1400
+ .import_step_note.success:before {
1401
+ content: "\1F44D";
1402
+ }
1403
+
1404
+ .import_step_note.failed:before {
1405
+ content: "\274C";
1406
+ }
1407
+
1408
+ #customize-header-actions {
1409
+ background: #ffffff;
1410
+ border-color: #e0e8ef;
1411
+ }
1412
+
1413
+ .wp-full-overlay-sidebar,
1414
+ .customize-themes-panel,
1415
+ #customize-sidebar-outer-content {
1416
+ background: #F7F9FA;
1417
+ border-right: 1px solid #e0e8ef;
1418
+ }
1419
+
1420
+ .outer-section-open #customize-controls .wp-full-overlay-sidebar-content,
1421
+ .attachment-media-view, .media-widget-preview.media_audio, .media-widget-preview.media_image {
1422
+ background: #F7F9FA;
1423
+ }
1424
+
1425
+ #customize-theme-controls #accordion-section-menu_locations {
1426
+ border-bottom: 1px solid #e0e8ef;
1427
+ }
1428
+
1429
+ #customize-controls #accordion-section-themes > .accordion-section-title {
1430
+ font-weight: 600;
1431
+ border-bottom: 1px solid #e0e8ef;
1432
+ }
1433
+
1434
+ #customize-controls #accordion-section-themes > .accordion-section-title:hover {
1435
+ background: #fff;
1436
+ }
1437
+
1438
+ #customize-controls .panel-meta.customize-info {
1439
+ border-bottom-color: #e0e8ef;
1440
+ }
1441
+
1442
+ #customize-theme-controls .control-section .accordion-section-title {
1443
+ font-weight: 400;
1444
+ border-top: 1px solid #e0e8ef;
1445
+ border-bottom: none;
1446
+ }
1447
+
1448
+ #customize-theme-controls .control-section:last-of-type > .accordion-section-title {
1449
+ border-bottom: 1px solid #e0e8ef;
1450
+ }
1451
+
1452
+ #customize-theme-controls .customize-section-title {
1453
+ border-top: 1px solid #e0e8ef;
1454
+ border-bottom: 1px solid #e0e8ef;
1455
+ }
1456
+
1457
+ #customize-controls .control-section .accordion-section-title:focus, #customize-controls .control-section .accordion-section-title:hover, #customize-controls .control-section.open .accordion-section-title, #customize-controls .control-section:hover > .accordion-section-title {
1458
+ color: #056184;
1459
+ background: #f5fcff;
1460
+ border-left-color: #f5fcff;
1461
+ }
1462
+
1463
+ .wp-customizer {
1464
+ /* SECTION: NAV MENUS */
1465
+ }
1466
+
1467
+ .wp-customizer .menu-item-edit-active .menu-item-handle, .wp-customizer .section-open .menu-item-settings, .wp-customizer .menu-item-bar .menu-item-handle:hover {
1468
+ border-color: #e0e8ef;
1469
+ }
1470
+
1471
+ .wp-customizer .section-open .menu-item-settings {
1472
+ background: #f5fcff;
1473
+ }
1474
+
1475
+ .wp-customizer .control-section-nav_menu .menu-location-settings {
1476
+ border-top-color: #e0e8ef !important;
1477
+ }
1478
+
1479
+ [data-balloon] {
1480
+ position: relative;
1481
+ }
1482
+
1483
+ [data-balloon]::before {
1484
+ opacity: 0;
1485
+ pointer-events: none;
1486
+ -webkit-transition: all .18s ease-out;
1487
+ transition: all .18s ease-out;
1488
+ background: rgba(17, 17, 17, 0.9);
1489
+ border-radius: 4px;
1490
+ color: #fff;
1491
+ content: attr(data-balloon);
1492
+ font-size: 12px;
1493
+ padding: .5em 1em;
1494
+ position: absolute;
1495
+ white-space: nowrap;
1496
+ z-index: 10;
1497
+ }
1498
+
1499
+ [data-balloon]::after {
1500
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(0)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1501
+ background-size: 100% auto;
1502
+ width: 18px;
1503
+ height: 6px;
1504
+ opacity: 0;
1505
+ pointer-events: none;
1506
+ -webkit-transition: all .18s ease-out;
1507
+ transition: all .18s ease-out;
1508
+ content: '';
1509
+ position: absolute;
1510
+ z-index: 10;
1511
+ }
1512
+
1513
+ [data-balloon]:hover::before, [data-balloon]:hover::after {
1514
+ opacity: 1;
1515
+ pointer-events: auto;
1516
+ }
1517
+
1518
+ [data-balloon][data-balloon-pos="up"]::before {
1519
+ bottom: 100%;
1520
+ left: 50%;
1521
+ margin-bottom: 11px;
1522
+ -webkit-transform: translate3d(-50%, 10px, 0);
1523
+ transform: translate3d(-50%, 10px, 0);
1524
+ -webkit-transform-origin: top;
1525
+ transform-origin: top;
1526
+ }
1527
+
1528
+ [data-balloon][data-balloon-pos="up"]::after {
1529
+ bottom: 100%;
1530
+ left: 50%;
1531
+ margin-bottom: 5px;
1532
+ -webkit-transform: translate3d(-50%, 10px, 0);
1533
+ transform: translate3d(-50%, 10px, 0);
1534
+ -webkit-transform-origin: top;
1535
+ transform-origin: top;
1536
+ }
1537
+
1538
+ [data-balloon][data-balloon-pos="up"]:hover::before {
1539
+ -webkit-transform: translate3d(-50%, 0, 0);
1540
+ transform: translate3d(-50%, 0, 0);
1541
+ }
1542
+
1543
+ [data-balloon][data-balloon-pos="up"]:hover::after {
1544
+ -webkit-transform: translate3d(-50%, 0, 0);
1545
+ transform: translate3d(-50%, 0, 0);
1546
+ }
1547
+
1548
+ [data-balloon][data-balloon-pos='down']::before {
1549
+ left: 50%;
1550
+ margin-top: 11px;
1551
+ top: 100%;
1552
+ -webkit-transform: translate3d(-50%, -10px, 0);
1553
+ transform: translate3d(-50%, -10px, 0);
1554
+ }
1555
+
1556
+ [data-balloon][data-balloon-pos='down']::after {
1557
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(180 18 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1558
+ background-size: 100% auto;
1559
+ width: 18px;
1560
+ height: 6px;
1561
+ left: 50%;
1562
+ margin-top: 5px;
1563
+ top: 100%;
1564
+ -webkit-transform: translate3d(-50%, -10px, 0);
1565
+ transform: translate3d(-50%, -10px, 0);
1566
+ }
1567
+
1568
+ [data-balloon][data-balloon-pos='down']:hover::before {
1569
+ -webkit-transform: translate3d(-50%, 0, 0);
1570
+ transform: translate3d(-50%, 0, 0);
1571
+ }
1572
+
1573
+ [data-balloon][data-balloon-pos='down']:hover::after {
1574
+ -webkit-transform: translate3d(-50%, 0, 0);
1575
+ transform: translate3d(-50%, 0, 0);
1576
+ }
1577
+
1578
+ [data-balloon][data-balloon-pos='left']::before {
1579
+ margin-right: 11px;
1580
+ right: 100%;
1581
+ top: 50%;
1582
+ -webkit-transform: translate3d(10px, -50%, 0);
1583
+ transform: translate3d(10px, -50%, 0);
1584
+ }
1585
+
1586
+ [data-balloon][data-balloon-pos='left']::after {
1587
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(-90 18 18)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1588
+ background-size: 100% auto;
1589
+ width: 6px;
1590
+ height: 18px;
1591
+ margin-right: 5px;
1592
+ right: 100%;
1593
+ top: 50%;
1594
+ -webkit-transform: translate3d(10px, -50%, 0);
1595
+ transform: translate3d(10px, -50%, 0);
1596
+ }
1597
+
1598
+ [data-balloon][data-balloon-pos='left']:hover::before {
1599
+ -webkit-transform: translate3d(0, -50%, 0);
1600
+ transform: translate3d(0, -50%, 0);
1601
+ }
1602
+
1603
+ [data-balloon][data-balloon-pos='left']:hover::after {
1604
+ -webkit-transform: translate3d(0, -50%, 0);
1605
+ transform: translate3d(0, -50%, 0);
1606
+ }
1607
+
1608
+ [data-balloon][data-balloon-pos='right']::before {
1609
+ left: 100%;
1610
+ margin-left: 11px;
1611
+ top: 50%;
1612
+ -webkit-transform: translate3d(-10px, -50%, 0);
1613
+ transform: translate3d(-10px, -50%, 0);
1614
+ }
1615
+
1616
+ [data-balloon][data-balloon-pos='right']::after {
1617
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(90 6 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1618
+ background-size: 100% auto;
1619
+ width: 6px;
1620
+ height: 18px;
1621
+ left: 100%;
1622
+ margin-left: 5px;
1623
+ top: 50%;
1624
+ -webkit-transform: translate3d(-10px, -50%, 0);
1625
+ transform: translate3d(-10px, -50%, 0);
1626
+ }
1627
+
1628
+ [data-balloon][data-balloon-pos='right']:hover::before {
1629
+ -webkit-transform: translate3d(0, -50%, 0);
1630
+ transform: translate3d(0, -50%, 0);
1631
+ }
1632
+
1633
+ [data-balloon][data-balloon-pos='right']:hover::after {
1634
+ -webkit-transform: translate3d(0, -50%, 0);
1635
+ transform: translate3d(0, -50%, 0);
1636
+ }
1637
+
1638
+ [data-balloon][data-balloon-length='small']::before {
1639
+ white-space: normal;
1640
+ width: 80px;
1641
+ }
1642
+
1643
+ [data-balloon][data-balloon-length='medium']::before {
1644
+ white-space: normal;
1645
+ width: 150px;
1646
+ }
1647
+
1648
+ [data-balloon][data-balloon-length='large']::before {
1649
+ white-space: normal;
1650
+ width: 260px;
1651
+ }
1652
+
1653
+ [data-balloon][data-balloon-length='xlarge']::before {
1654
+ white-space: normal;
1655
+ width: 380px;
1656
+ }
1657
+
1658
+ @media screen and (max-width: 768px) {
1659
+ [data-balloon][data-balloon-length='xlarge']::before {
1660
+ white-space: normal;
1661
+ width: 90vw;
1662
+ }
1663
+ }
1664
+
1665
+ [data-balloon][data-balloon-length='fit']::before {
1666
+ white-space: normal;
1667
+ width: 100%;
1668
+ }
1669
+
1670
+ /* ==========================================================================
1671
+ #FEEDBACK MODAL
1672
+ ========================================================================== */
1673
+ body.modal-open {
1674
+ overflow: hidden;
1675
+ }
1676
+
1677
+ body.modal-open #style-manager-user-feedback-modal .modal {
1678
+ overflow-x: hidden;
1679
+ overflow-y: auto;
1680
+ visibility: visible;
1681
+ opacity: 1;
1682
+ -webkit-transform: translate(0, 0);
1683
+ transform: translate(0, 0);
1684
+ }
1685
+
1686
+ #style-manager-user-feedback-modal {
1687
+ height: 100%;
1688
+ }
1689
+
1690
+ #style-manager-user-feedback-modal .modal {
1691
+ position: relative;
1692
+ height: 100%;
1693
+ display: -webkit-box;
1694
+ display: -ms-flexbox;
1695
+ display: flex;
1696
+ -webkit-box-align: center;
1697
+ -ms-flex-align: center;
1698
+ align-items: center;
1699
+ top: 0;
1700
+ right: 0;
1701
+ bottom: 0;
1702
+ left: 0;
1703
+ z-index: 1050;
1704
+ opacity: 0;
1705
+ visibility: hidden;
1706
+ overflow: hidden;
1707
+ outline: 0;
1708
+ -webkit-transition: all .3s ease;
1709
+ transition: all .3s ease;
1710
+ -webkit-transform: translate(0, -10%);
1711
+ transform: translate(0, -10%);
1712
+ font-family: 'Galano Grotesque Alt', -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
1713
+ font-weight: 400;
1714
+ font-size: 16px;
1715
+ line-height: 1.7;
1716
+ }
1717
+
1718
+ #style-manager-user-feedback-modal .modal-dialog {
1719
+ position: relative;
1720
+ width: auto;
1721
+ margin: 10px;
1722
+ text-align: left;
1723
+ }
1724
+
1725
+ #style-manager-user-feedback-modal .modal-content {
1726
+ position: relative;
1727
+ display: -webkit-box;
1728
+ display: -ms-flexbox;
1729
+ display: flex;
1730
+ -webkit-box-orient: vertical;
1731
+ -webkit-box-direction: normal;
1732
+ -ms-flex-direction: column;
1733
+ flex-direction: column;
1734
+ background-color: #fff;
1735
+ background-clip: padding-box;
1736
+ border: none;
1737
+ border-radius: 4px;
1738
+ -webkit-box-shadow: 0 4px 4px 0 rgba(42, 54, 52, 0.1), 0 8px 8px 0 rgba(42, 54, 52, 0.1), 0 16px 16px 0 rgba(42, 54, 52, 0.1), 0 16px 32px 0 rgba(42, 54, 52, 0.1), 0 32px 64px 0 rgba(42, 54, 52, 0.1), 0 64px 128px 0 rgba(42, 54, 52, 0.1);
1739
+ box-shadow: 0 4px 4px 0 rgba(42, 54, 52, 0.1), 0 8px 8px 0 rgba(42, 54, 52, 0.1), 0 16px 16px 0 rgba(42, 54, 52, 0.1), 0 16px 32px 0 rgba(42, 54, 52, 0.1), 0 32px 64px 0 rgba(42, 54, 52, 0.1), 0 64px 128px 0 rgba(42, 54, 52, 0.1);
1740
+ outline: 0;
1741
+ }
1742
+
1743
+ #style-manager-user-feedback-modal .modal-content p {
1744
+ color: #000;
1745
+ }
1746
+
1747
+ #style-manager-user-feedback-modal .modal-content p a {
1748
+ font-weight: 500;
1749
+ color: #9660C6;
1750
+ border-bottom: 1px solid #9660C6;
1751
+ }
1752
+
1753
+ #style-manager-user-feedback-modal .modal-content > form {
1754
+ margin-bottom: 20px;
1755
+ }
1756
+
1757
+ #style-manager-user-feedback-modal .modal-backdrop {
1758
+ position: fixed;
1759
+ top: 0;
1760
+ right: 0;
1761
+ bottom: 0;
1762
+ left: 0;
1763
+ z-index: 1040;
1764
+ background-color: #000;
1765
+ opacity: 0;
1766
+ visibility: hidden;
1767
+ -webkit-transition: all 0.3s ease;
1768
+ transition: all 0.3s ease;
1769
+ }
1770
+
1771
+ .modal-open #style-manager-user-feedback-modal .modal-backdrop {
1772
+ opacity: 0.8;
1773
+ visibility: visible;
1774
+ }
1775
+
1776
+ #style-manager-user-feedback-modal .modal-header {
1777
+ display: -webkit-box;
1778
+ display: -ms-flexbox;
1779
+ display: flex;
1780
+ -webkit-box-align: start;
1781
+ -ms-flex-align: start;
1782
+ align-items: flex-start;
1783
+ -webkit-box-pack: justify;
1784
+ -ms-flex-pack: justify;
1785
+ justify-content: space-between;
1786
+ padding: 30px 48px 10px 48px;
1787
+ }
1788
+
1789
+ #style-manager-user-feedback-modal .modal-header .close.button {
1790
+ top: -10px;
1791
+ }
1792
+
1793
+ #style-manager-user-feedback-modal .modal-header .close.icon {
1794
+ opacity: 0.5;
1795
+ }
1796
+
1797
+ #style-manager-user-feedback-modal .modal-header .close:hover {
1798
+ opacity: 1;
1799
+ }
1800
+
1801
+ #style-manager-user-feedback-modal .modal-title {
1802
+ margin-bottom: 10px;
1803
+ line-height: 1.5;
1804
+ }
1805
+
1806
+ #style-manager-user-feedback-modal .modal-title.modal-title--small {
1807
+ font-weight: 500;
1808
+ }
1809
+
1810
+ #style-manager-user-feedback-modal .modal-body {
1811
+ position: relative;
1812
+ -webkit-box-flex: 1;
1813
+ -ms-flex: 1 1 auto;
1814
+ flex: 1 1 auto;
1815
+ padding: 30px 30px 0 30px;
1816
+ }
1817
+
1818
+ #style-manager-user-feedback-modal .modal-body.full {
1819
+ padding: 0;
1820
+ }
1821
+
1822
+ #style-manager-user-feedback-modal .modal-body.full .box {
1823
+ padding-top: 0;
1824
+ padding-bottom: 0;
1825
+ margin-top: 0;
1826
+ }
1827
+
1828
+ #style-manager-user-feedback-modal .modal-body.full + .modal-footer.full .box {
1829
+ padding-top: 18px;
1830
+ }
1831
+
1832
+ #style-manager-user-feedback-modal .modal-footer {
1833
+ padding: 30px;
1834
+ text-align: center;
1835
+ }
1836
+
1837
+ #style-manager-user-feedback-modal .modal-footer .box .button:last-child {
1838
+ margin-bottom: 0;
1839
+ }
1840
+
1841
+ #style-manager-user-feedback-modal .modal-footer.full {
1842
+ padding: 0;
1843
+ }
1844
+
1845
+ #style-manager-user-feedback-modal .modal-scrollbar-measure {
1846
+ position: absolute;
1847
+ top: -9999px;
1848
+ width: 50px;
1849
+ height: 50px;
1850
+ overflow: scroll;
1851
+ }
1852
+
1853
+ #style-manager-user-feedback-modal .modal-state {
1854
+ display: none;
1855
+ }
1856
+
1857
+ #style-manager-user-feedback-modal .modal-state:checked + .modal {
1858
+ opacity: 1;
1859
+ visibility: visible;
1860
+ }
1861
+
1862
+ #style-manager-user-feedback-modal .modal-state:checked + .modal .modal__inner {
1863
+ top: 0;
1864
+ }
1865
+
1866
+ @media (min-width: 576px) {
1867
+ #style-manager-user-feedback-modal .modal-dialog {
1868
+ max-width: 655px;
1869
+ margin: 30px auto;
1870
+ }
1871
+ #style-manager-user-feedback-modal .modal-sm {
1872
+ max-width: 300px;
1873
+ }
1874
+ }
1875
+
1876
+ @media (min-width: 576px) {
1877
+ #style-manager-user-feedback-modal .modal-lg {
1878
+ max-width: 800px;
1879
+ }
1880
+ }
1881
+
1882
+ #style-manager-user-feedback .modal-body .box {
1883
+ position: relative;
1884
+ -webkit-box-orient: vertical;
1885
+ -webkit-box-direction: normal;
1886
+ -ms-flex-direction: column;
1887
+ flex-direction: column;
1888
+ display: -webkit-box;
1889
+ display: -ms-flexbox;
1890
+ display: flex;
1891
+ -ms-flex-wrap: nowrap;
1892
+ flex-wrap: nowrap;
1893
+ -webkit-box-align: center;
1894
+ -ms-flex-align: center;
1895
+ align-items: center;
1896
+ margin: 20px 0;
1897
+ padding: 16px 52px;
1898
+ border-radius: 4px;
1899
+ }
1900
+
1901
+ #style-manager-user-feedback .modal-body .box > * {
1902
+ width: 100%;
1903
+ }
1904
+
1905
+ #style-manager-user-feedback .modal-body p {
1906
+ font-size: 16px;
1907
+ margin-bottom: 20px;
1908
+ }
1909
+
1910
+ #style-manager-user-feedback .modal-body textarea {
1911
+ width: 100%;
1912
+ margin: 0;
1913
+ padding: 11px 18px;
1914
+ border: 1px solid #dddddd;
1915
+ border-radius: 4px;
1916
+ -webkit-box-shadow: none;
1917
+ box-shadow: none;
1918
+ font-family: 'Galano Grotesque Alt', -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
1919
+ font-size: 16px;
1920
+ line-height: 26px;
1921
+ color: #473850;
1922
+ }
1923
+
1924
+ #style-manager-user-feedback .modal-title {
1925
+ margin-top: 0;
1926
+ margin-bottom: 34px;
1927
+ font-family: 'Galano Classic', -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
1928
+ font-weight: 600;
1929
+ font-size: 28px;
1930
+ line-height: 1.4;
1931
+ text-align: center;
1932
+ }
1933
+
1934
+ #style-manager-user-feedback .button {
1935
+ text-decoration: none;
1936
+ cursor: pointer;
1937
+ -webkit-font-smoothing: antialiased;
1938
+ position: relative;
1939
+ -webkit-transition-duration: .2s;
1940
+ transition-duration: .2s;
1941
+ -webkit-transition-timing-function: cubic-bezier(0, 0, 0.58, 1);
1942
+ transition-timing-function: cubic-bezier(0, 0, 0.58, 1);
1943
+ -webkit-transition-property: background,background-color,color,-webkit-transform,-webkit-box-shadow;
1944
+ transition-property: background,background-color,color,-webkit-transform,-webkit-box-shadow;
1945
+ transition-property: transform,background,background-color,color,box-shadow;
1946
+ transition-property: transform,background,background-color,color,box-shadow,-webkit-transform,-webkit-box-shadow;
1947
+ display: inline-block;
1948
+ padding: 15px 50px;
1949
+ border-radius: 2px;
1950
+ font-family: "Galano Classic", -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
1951
+ font-size: 16px;
1952
+ line-height: 23px;
1953
+ font-weight: 600;
1954
+ text-align: center;
1955
+ background-color: #9660c6;
1956
+ color: #ffffff;
1957
+ border-radius: 4px;
1958
+ -webkit-box-shadow: none;
1959
+ box-shadow: none;
1960
+ height: auto;
1961
+ width: 100%;
1962
+ margin-top: 20px;
1963
+ }
1964
+
1965
+ #style-manager-user-feedback .button:hover {
1966
+ background-color: #9660c6;
1967
+ color: #ffffff;
1968
+ -webkit-transform: scale(1.05) translateY(-3px);
1969
+ transform: scale(1.05) translateY(-3px);
1970
+ -webkit-box-shadow: 0 10px 20px -10px rgba(0, 0, 0, 0.7);
1971
+ box-shadow: 0 10px 20px -10px rgba(0, 0, 0, 0.7);
1972
+ }
1973
+
1974
+ #style-manager-user-feedback .second-step {
1975
+ margin-top: 18px;
1976
+ }
1977
+
1978
+ #style-manager-user-feedback .thanks-step,
1979
+ #style-manager-user-feedback .error-step {
1980
+ text-align: center;
1981
+ }
1982
+
1983
+ #style-manager-user-feedback .thanks-step .modal-title,
1984
+ #style-manager-user-feedback .error-step .modal-title {
1985
+ margin-bottom: 0;
1986
+ }
1987
+
1988
+ #style-manager-user-feedback .thanks-step p:last-child,
1989
+ #style-manager-user-feedback .error-step p:last-child {
1990
+ margin-bottom: 10px;
1991
+ }
1992
+
1993
+ .scorecard {
1994
+ display: -webkit-box;
1995
+ display: -ms-flexbox;
1996
+ display: flex;
1997
+ -webkit-box-align: baseline;
1998
+ -ms-flex-align: baseline;
1999
+ align-items: baseline;
2000
+ -webkit-box-pack: space-evenly;
2001
+ -ms-flex-pack: space-evenly;
2002
+ justify-content: space-evenly;
2003
+ color: #9660C6;
2004
+ font-family: "Galano Classic", -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
2005
+ font-size: 18px;
2006
+ font-weight: 600;
2007
+ text-align: center;
2008
+ }
2009
+
2010
+ .scorecard > label {
2011
+ font-size: 20px;
2012
+ }
2013
+
2014
+ .scorecard > label span {
2015
+ display: block;
2016
+ width: 46px;
2017
+ border: 2px solid #9660C6;
2018
+ line-height: 46px;
2019
+ border-radius: 100%;
2020
+ background: #FFF;
2021
+ -webkit-transition: all 0.25s ease;
2022
+ transition: all 0.25s ease;
2023
+ }
2024
+
2025
+ .scorecard > label input[type="radio"] {
2026
+ display: none;
2027
+ }
2028
+
2029
+ .scorecard > label span:hover,
2030
+ .scorecard > label input[type="radio"]:checked ~ span {
2031
+ background: #9660C6;
2032
+ color: #FFF;
2033
+ }
2034
+
2035
+ .font-options__wrapper .font-options__options-list {
2036
+ border-color: #B8DAEB;
2037
+ -webkit-box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.15);
2038
+ box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.15);
2039
+ }
2040
+
2041
+ .font-options__wrapper .font-options__option {
2042
+ margin-bottom: 12px;
2043
+ }
2044
+
2045
+ .font-options__wrapper .font-options__option label {
2046
+ display: block;
2047
+ margin-bottom: 6px;
2048
+ }
2049
+
2050
+ .font-options__wrapper [type=checkbox]:checked ~ .font-options__options-list {
2051
+ opacity: 1;
2052
+ display: block;
2053
+ }
2054
+
2055
+ input.customify_font_tooltip {
2056
+ display: none;
2057
+ }
2058
+
2059
+ ul.font-options__options-list .select2-container {
2060
+ width: 100% !important;
2061
+ }
2062
+
2063
+ ul.font-options__options-list .select2-container .select2-selection--single {
2064
+ -webkit-appearance: initial;
2065
+ }
2066
+
2067
+ ul.font-options__options-list .select2-container .select2-selection--single .select2-selection__arrow {
2068
+ display: none;
2069
+ }
2070
+
2071
+ ul.font-options__options-list .select2-container--default .select2-selection--single .select2-selection__rendered {
2072
+ color: inherit;
2073
+ line-height: initial;
2074
+ }
2075
+
2076
+ .select2-container.select2-container--open {
2077
+ z-index: 99999999;
2078
+ }
2079
+
2080
+ #customize-theme-controls .select2-container {
2081
+ width: 100% !important;
2082
+ }
2083
+
2084
+ #customize-theme-controls .select2-container .select2-selection--multiple {
2085
+ -webkit-appearance: initial;
2086
+ padding: 4px 8px 4px;
2087
+ height: auto;
2088
+ background: none;
2089
+ }
2090
+
2091
+ #customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__arrow {
2092
+ display: none;
2093
+ }
2094
+
2095
+ #customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered {
2096
+ padding: 0;
2097
+ display: -webkit-box;
2098
+ display: -ms-flexbox;
2099
+ display: flex;
2100
+ }
2101
+
2102
+ #customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline {
2103
+ -webkit-box-flex: 1;
2104
+ -ms-flex: 1;
2105
+ flex: 1;
2106
+ }
2107
+
2108
+ #customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline .select2-search__field[class] {
2109
+ min-width: 100%;
2110
+ border-width: 0;
2111
+ margin-top: 3px !important;
2112
+ }
2113
+
2114
+ #customize-theme-controls .select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice {
2115
+ padding: 3px 7px;
2116
+ margin-right: 6px;
2117
+ margin-top: 0px;
2118
+ border-color: #e0e8ef;
2119
+ background-color: #f6fbff;
2120
+ }
2121
+
2122
+ #customize-theme-controls .select2-container .select2-search--inline .select2-search__field {
2123
+ height: 29px;
2124
+ min-width: 9em;
2125
+ margin-top: 0;
2126
+ }
2127
+
2128
+ .select2-container--default .select2-results__option[aria-selected=true][class] {
2129
+ background: transparent;
2130
+ opacity: 0.3;
2131
+ pointer-events: none;
2132
+ }
2133
+
2134
+ .select2-container .select2-dropdown {
2135
+ border-color: #e0e8ef;
2136
+ }
2137
+
2138
+ #customize-theme-controls .widget-content .accordion-container {
2139
+ margin-left: -10px;
2140
+ margin-right: -10px;
2141
+ margin-top: 20px;
2142
+ margin-bottom: 10px;
2143
+ }
2144
+
2145
+ #customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-content {
2146
+ position: relative;
2147
+ left: 0;
2148
+ max-height: 0;
2149
+ padding-top: 0;
2150
+ padding-bottom: 0;
2151
+ overflow: hidden;
2152
+ -webkit-transition: all .4s ease;
2153
+ transition: all .4s ease;
2154
+ color: #416B7E;
2155
+ }
2156
+
2157
+ #customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-content p:first-child {
2158
+ margin-top: 0;
2159
+ }
2160
+
2161
+ #customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-content p:last-child {
2162
+ margin-bottom: 0;
2163
+ }
2164
+
2165
+ #customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-title {
2166
+ color: #39474D;
2167
+ }
2168
+
2169
+ #customize-theme-controls .widget-content .accordion-container .accordion-section .accordion-section-title:after {
2170
+ content: "\f142";
2171
+ -webkit-transform: rotate(180deg);
2172
+ transform: rotate(180deg);
2173
+ }
2174
+
2175
+ #customize-theme-controls .widget-content .accordion-container .accordion-section.open {
2176
+ border-bottom: none;
2177
+ }
2178
+
2179
+ #customize-theme-controls .widget-content .accordion-container .accordion-section.open .accordion-section-content {
2180
+ max-height: 100%;
2181
+ padding-top: 17px;
2182
+ padding-bottom: 17px;
2183
+ }
2184
+
2185
+ #customize-theme-controls .widget-content .accordion-container .accordion-section.open .accordion-section-title {
2186
+ border-bottom: 1px solid;
2187
+ }
2188
+
2189
+ #customize-theme-controls .widget-content .accordion-container .accordion-section.open .accordion-section-title:after {
2190
+ -webkit-transform: rotate(0deg);
2191
+ transform: rotate(0deg);
2192
+ }
2193
+
2194
+ #customize-theme-controls .widget-content .accordion-container label.customize-control-title, #customize-theme-controls .widget-content .accordion-container label.separator.label {
2195
+ cursor: default;
2196
+ }
2197
+
2198
+ .widget .widget-content > p input[type=checkbox],
2199
+ .widget .widget-content > p input[type=radio] {
2200
+ margin-bottom: 3px;
2201
+ margin-top: 3px;
2202
+ }
2203
+
2204
+ .widget .widget-content small {
2205
+ margin-top: 5px;
2206
+ display: block;
2207
+ }
2208
+
2209
+ #available-widgets [class*=pixelgrade] .widget .widget-title:before,
2210
+ #available-widgets [class*=featured-posts] .widget .widget-title:before,
2211
+ #available-widgets [class*=categories-image-grid] .widget .widget-title:before {
2212
+ content: "\f538";
2213
+ color: #9660c6;
2214
+ }
2215
+
2216
+ #available-widgets [class*=pixelgrade-featured-posts-slideshow] .widget .widget-title:before {
2217
+ content: "\f233";
2218
+ }
2219
+
2220
+ #available-widgets [class*=pixelgrade-featured-posts-carousel] .widget .widget-title:before {
2221
+ content: "\f169";
2222
+ }
2223
+
2224
+ #available-widgets [class*=featured-posts-grid] .widget .widget-title:before {
2225
+ content: "\f180";
2226
+ }
2227
+
2228
+ #available-widgets [class*=featured-posts-list] .widget .widget-title:before {
2229
+ content: "\f164";
2230
+ }
2231
+
2232
+ #available-widgets [class*=categories-image-grid] .widget .widget-title:before {
2233
+ content: "\f163";
2234
+ }
2235
+
2236
+ #available-widgets [class*=pixelgrade-promo-box] .widget .widget-title:before {
2237
+ content: "\f488";
2238
+ }
2239
+
2240
+ .ui-tooltip {
2241
+ z-index: 999999;
2242
+ }
2243
+
2244
+ .wp-customizer .widget-conditional .condition-control:after {
2245
+ content: " ";
2246
+ display: table;
2247
+ clear: both;
2248
+ }
2249
+
2250
+ .wp-customizer .widget-conditional .selection {
2251
+ padding-right: 50px;
2252
+ padding-left: 28px;
2253
+ padding-bottom: 19px;
2254
+ margin-left: 0;
2255
+ margin-right: 0;
2256
+ margin-bottom: 10px;
2257
+ border-bottom: 1px solid #cbcfd4;
2258
+ }
2259
+
2260
+ .wp-customizer .widget-conditional .condition:last-child .selection {
2261
+ border: 0;
2262
+ }
2263
+
2264
+ .wp-customizer .widget-conditional select {
2265
+ max-width: 100%;
2266
+ width: 170px;
2267
+ }
2268
+
2269
+ .wp-customizer .widget-conditional .condition-top select {
2270
+ width: 130px;
2271
+ }
2272
+
2273
+ .pix_customizer_setting .customize-inside-control-row {
2274
+ position: relative;
2275
+ width: 100% !important;
2276
+ margin-left: 0 !important;
2277
+ text-indent: 0 !important;
2278
+ background-size: cover;
2279
+ background-position: 50% 50%;
2280
+ height: 64px;
2281
+ border-radius: 5px;
2282
+ overflow: hidden;
2283
+ }
2284
+
2285
+ .pix_customizer_setting .customize-inside-control-row:before {
2286
+ content: '';
2287
+ position: absolute;
2288
+ top: 0;
2289
+ bottom: 0;
2290
+ left: 0;
2291
+ right: 0;
2292
+ z-index: 10;
2293
+ pointer-events: none;
2294
+ -webkit-box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.2);
2295
+ box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.2);
2296
+ }
2297
+
2298
+ .pix_customizer_setting .customize-inside-control-row:hover:before {
2299
+ -webkit-box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.4);
2300
+ box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.4);
2301
+ }
2302
+
2303
+ .pix_customizer_setting .customize-inside-control-row:hover .palette__item {
2304
+ -webkit-transform: translateY(0%);
2305
+ transform: translateY(0%);
2306
+ }
2307
+
2308
+ .pix_customizer_setting .customize-inside-control-row:hover label {
2309
+ left: 10px;
2310
+ }
2311
+
2312
+ .pix_customizer_setting .customize-inside-control-row input {
2313
+ opacity: 0;
2314
+ }
2315
+
2316
+ .pix_customizer_setting .customize-inside-control-row input:checked + label .preview__letter--checked {
2317
+ display: inline-block;
2318
+ vertical-align: middle;
2319
+ }
2320
+
2321
+ .pix_customizer_setting .customize-inside-control-row input:checked + label .preview__letter {
2322
+ display: none;
2323
+ }
2324
+
2325
+ .pix_customizer_setting .customize-inside-control-row label {
2326
+ position: absolute;
2327
+ display: -webkit-box;
2328
+ display: -ms-flexbox;
2329
+ display: flex;
2330
+ z-index: 2;
2331
+ width: 100%;
2332
+ height: 100%;
2333
+ top: 0;
2334
+ left: 0;
2335
+ padding: 0 10px;
2336
+ margin-top: 0 !important;
2337
+ -webkit-box-align: center;
2338
+ -ms-flex-align: center;
2339
+ align-items: center;
2340
+ -webkit-transition: all .3s ease;
2341
+ transition: all .3s ease;
2342
+ }
2343
+
2344
+ .pix_customizer_setting .customize-inside-control-row .palette {
2345
+ position: absolute;
2346
+ display: -webkit-box;
2347
+ display: -ms-flexbox;
2348
+ display: flex;
2349
+ top: 0;
2350
+ left: 0;
2351
+ z-index: 1;
2352
+ width: 100%;
2353
+ height: 100%;
2354
+ -webkit-transition: all .2s ease;
2355
+ transition: all .2s ease;
2356
+ }
2357
+
2358
+ .pix_customizer_setting .customize-inside-control-row .palette__item {
2359
+ -webkit-box-flex: 1;
2360
+ -ms-flex: 1;
2361
+ flex: 1;
2362
+ -webkit-transform: translateY(100%);
2363
+ transform: translateY(100%);
2364
+ -webkit-transition: all .3s ease;
2365
+ transition: all .3s ease;
2366
+ }
2367
+
2368
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(1) {
2369
+ -webkit-transition-delay: 0s;
2370
+ transition-delay: 0s;
2371
+ }
2372
+
2373
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(2) {
2374
+ -webkit-transition-delay: 0.05s;
2375
+ transition-delay: 0.05s;
2376
+ }
2377
+
2378
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(3) {
2379
+ -webkit-transition-delay: 0.1s;
2380
+ transition-delay: 0.1s;
2381
+ }
2382
+
2383
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(4) {
2384
+ -webkit-transition-delay: 0.15s;
2385
+ transition-delay: 0.15s;
2386
+ }
2387
+
2388
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(5) {
2389
+ -webkit-transition-delay: 0.2s;
2390
+ transition-delay: 0.2s;
2391
+ }
2392
+
2393
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(6) {
2394
+ -webkit-transition-delay: 0.25s;
2395
+ transition-delay: 0.25s;
2396
+ }
2397
+
2398
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(7) {
2399
+ -webkit-transition-delay: 0.3s;
2400
+ transition-delay: 0.3s;
2401
+ }
2402
+
2403
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(8) {
2404
+ -webkit-transition-delay: 0.35s;
2405
+ transition-delay: 0.35s;
2406
+ }
2407
+
2408
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(9) {
2409
+ -webkit-transition-delay: 0.4s;
2410
+ transition-delay: 0.4s;
2411
+ }
2412
+
2413
+ .pix_customizer_setting .customize-inside-control-row .palette__item:nth-child(10) {
2414
+ -webkit-transition-delay: 0.45s;
2415
+ transition-delay: 0.45s;
2416
+ }
2417
+
2418
+ .pix_customizer_setting .customize-inside-control-row .preview__letter,
2419
+ .pix_customizer_setting .customize-inside-control-row .preview__letter--checked {
2420
+ display: inline-block;
2421
+ padding: 3px;
2422
+ border-radius: 2px;
2423
+ color: white;
2424
+ margin-right: 5px;
2425
+ min-height: 26px;
2426
+ min-width: 26px;
2427
+ text-align: center;
2428
+ background-position: center center;
2429
+ background-repeat: no-repeat;
2430
+ background-size: 15px 15px;
2431
+ font-style: normal;
2432
+ vertical-align: baseline;
2433
+ }
2434
+
2435
+ .pix_customizer_setting .customize-inside-control-row .preview__letter--checked {
2436
+ display: none;
2437
+ }
2438
+
2439
+ [id*="sm_current_color_palette_control"] .customize-inside-control-row .palette__item[class] {
2440
+ -webkit-transform: none;
2441
+ transform: none;
2442
+ }
2443
+
2444
+ [id*="sm_current_color_palette_control"] .variation-control {
2445
+ display: -webkit-box;
2446
+ display: -ms-flexbox;
2447
+ display: flex;
2448
+ }
2449
+
2450
+ .label__inner {
2451
+ color: #000000;
2452
+ background: #F5F6F1;
2453
+ padding: 7px 12px 7px 7px;
2454
+ z-index: 2;
2455
+ border-radius: 3px;
2456
+ -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
2457
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
2458
+ }
2459
+
2460
+ .picker {
2461
+ position: relative;
2462
+ top: 0;
2463
+ left: 50%;
2464
+ width: 80%;
2465
+ max-width: 3em;
2466
+ margin-top: auto;
2467
+ margin-bottom: auto;
2468
+ border-radius: 50%;
2469
+ overflow: hidden;
2470
+ -webkit-transform: translate3d(-50%, 0, 0);
2471
+ transform: translate3d(-50%, 0, 0);
2472
+ }
2473
+
2474
+ .colors .picker > i {
2475
+ display: block;
2476
+ position: absolute;
2477
+ top: 0;
2478
+ right: 0;
2479
+ bottom: 0;
2480
+ left: 0;
2481
+ -webkit-box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.2);
2482
+ box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.2);
2483
+ border-radius: 50%;
2484
+ pointer-events: none;
2485
+ z-index: 20;
2486
+ }
2487
+
2488
+ .picker:before,
2489
+ .picker:after {
2490
+ content: "";
2491
+ display: block;
2492
+ background: currentColor;
2493
+ border-radius: 50%;
2494
+ }
2495
+
2496
+ .picker:before {
2497
+ padding-top: 100%;
2498
+ }
2499
+
2500
+ .picker:after {
2501
+ position: absolute;
2502
+ top: 0;
2503
+ left: 0;
2504
+ width: 100%;
2505
+ height: 100%;
2506
+ }
2507
+
2508
+ .fill {
2509
+ overflow: hidden;
2510
+ }
2511
+
2512
+ .color:first-child .fill {
2513
+ border-top-left-radius: 5px;
2514
+ border-bottom-left-radius: 5px;
2515
+ }
2516
+
2517
+ .color:last-child .fill {
2518
+ border-top-right-radius: 5px;
2519
+ border-bottom-right-radius: 5px;
2520
+ }
2521
+
2522
+ .label {
2523
+ margin-right: auto;
2524
+ }
2525
+
2526
+ #customize-theme-controls [id*="sm_current_color_palette_control"] {
2527
+ display: block;
2528
+ width: auto;
2529
+ }
2530
+
2531
+ #customize-theme-controls [id*="sm_current_color_palette_control"] .color-palette-container {
2532
+ background: white;
2533
+ }
2534
+
2535
+ #customize-theme-controls [id*="sm_current_color_palette_control"] .color-palette-container .description {
2536
+ margin-bottom: 15px;
2537
+ }
2538
+
2539
+ #customize-theme-controls [id*="sm_current_color_palette_control"] .description.c-color-palette__notification {
2540
+ padding-top: 19px;
2541
+ margin-bottom: 0;
2542
+ font-size: inherit;
2543
+ font-weight: bold;
2544
+ }
2545
+
2546
+ .c-color-palette__fields {
2547
+ position: relative;
2548
+ }
2549
+
2550
+ .c-color-palette .iris-picker {
2551
+ position: absolute;
2552
+ top: 100%;
2553
+ left: 0;
2554
+ z-index: 100;
2555
+ margin-top: 1em;
2556
+ border: 0;
2557
+ -webkit-box-shadow: black 0 3px 12px -4px;
2558
+ box-shadow: black 0 3px 12px -4px;
2559
+ }
2560
+
2561
+ .c-color-palette .iris-picker .iris-square-handle {
2562
+ border-color: transparent;
2563
+ left: -6px;
2564
+ top: -6px;
2565
+ }
2566
+
2567
+ .c-color-palette .iris-picker .iris-square-handle:after {
2568
+ position: absolute;
2569
+ bottom: 0;
2570
+ right: 0;
2571
+ left: 0;
2572
+ top: 0;
2573
+ border: 2px solid white;
2574
+ }
2575
+
2576
+ .c-color-palette .iris-picker .iris-square-value {
2577
+ -webkit-box-shadow: none !important;
2578
+ box-shadow: none !important;
2579
+ }
2580
+
2581
+ .colors {
2582
+ position: relative;
2583
+ display: -webkit-box;
2584
+ display: -ms-flexbox;
2585
+ display: flex;
2586
+ -ms-flex-wrap: wrap;
2587
+ flex-wrap: wrap;
2588
+ -webkit-box-align: center;
2589
+ -ms-flex-align: center;
2590
+ align-items: center;
2591
+ width: 100%;
2592
+ height: 3em;
2593
+ }
2594
+
2595
+ .color {
2596
+ display: -webkit-box;
2597
+ display: -ms-flexbox;
2598
+ display: flex;
2599
+ -webkit-box-orient: vertical;
2600
+ -webkit-box-direction: normal;
2601
+ -ms-flex-direction: column;
2602
+ flex-direction: column;
2603
+ -webkit-box-flex: 1;
2604
+ -ms-flex: 1 1 0px;
2605
+ flex: 1 1 0;
2606
+ overflow: hidden;
2607
+ -webkit-transition: flex-grow 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28), -webkit-box-flex 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
2608
+ transition: flex-grow 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28), -webkit-box-flex 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
2609
+ transition: flex-grow 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
2610
+ transition: flex-grow 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28), -webkit-box-flex 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28), -ms-flex-positive 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
2611
+ }
2612
+
2613
+ .color.hidden {
2614
+ display: -webkit-box;
2615
+ display: -ms-flexbox;
2616
+ display: flex;
2617
+ -webkit-box-flex: 0;
2618
+ -ms-flex-positive: 0;
2619
+ flex-grow: 0;
2620
+ -webkit-transition: flex-grow 0.3s cubic-bezier(0.6, -1, 0.74, 0.05), -webkit-box-flex 0.3s cubic-bezier(0.6, -1, 0.74, 0.05);
2621
+ transition: flex-grow 0.3s cubic-bezier(0.6, -1, 0.74, 0.05), -webkit-box-flex 0.3s cubic-bezier(0.6, -1, 0.74, 0.05);
2622
+ transition: flex-grow 0.3s cubic-bezier(0.6, -1, 0.74, 0.05);
2623
+ transition: flex-grow 0.3s cubic-bezier(0.6, -1, 0.74, 0.05), -webkit-box-flex 0.3s cubic-bezier(0.6, -1, 0.74, 0.05), -ms-flex-positive 0.3s cubic-bezier(0.6, -1, 0.74, 0.05);
2624
+ }
2625
+
2626
+ .color.hidden .picker {
2627
+ opacity: 0;
2628
+ -webkit-transition: opacity .2s ease-out;
2629
+ transition: opacity .2s ease-out;
2630
+ }
2631
+
2632
+ .color .picker {
2633
+ -webkit-transition: opacity .3s ease-in-out, border-color .3s ease-in-out;
2634
+ transition: opacity .3s ease-in-out, border-color .3s ease-in-out;
2635
+ cursor: pointer;
2636
+ }
2637
+
2638
+ .color.inactive .picker {
2639
+ opacity: 0.2;
2640
+ }
2641
+
2642
+ .color.inactive .picker:hover {
2643
+ opacity: 1;
2644
+ }
2645
+
2646
+ input.c-color-palette__input[class] {
2647
+ margin-top: 1em;
2648
+ }
2649
+
2650
+ #customize-control-sm_toggle_advanced_settings_control {
2651
+ margin-bottom: 0;
2652
+ opacity: 0;
2653
+ }
2654
+
2655
+ #customize-control-sm_toggle_advanced_settings_control button {
2656
+ width: 100%;
2657
+ }
2658
+
2659
+ @-webkit-keyframes bounceIn {
2660
+ 0%, 20%, 40%, 60%, 80%, 100% {
2661
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
2662
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
2663
+ }
2664
+ 0% {
2665
+ opacity: 0;
2666
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
2667
+ transform: scale3d(0.3, 0.3, 0.3);
2668
+ }
2669
+ 20% {
2670
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
2671
+ transform: scale3d(1.1, 1.1, 1.1);
2672
+ }
2673
+ 40% {
2674
+ -webkit-transform: scale3d(0.9, 0.9, 0.9);
2675
+ transform: scale3d(0.9, 0.9, 0.9);
2676
+ }
2677
+ 60% {
2678
+ opacity: 1;
2679
+ -webkit-transform: scale3d(1.03, 1.03, 1.03);
2680
+ transform: scale3d(1.03, 1.03, 1.03);
2681
+ }
2682
+ 80% {
2683
+ -webkit-transform: scale3d(0.97, 0.97, 0.97);
2684
+ transform: scale3d(0.97, 0.97, 0.97);
2685
+ }
2686
+ 100% {
2687
+ opacity: 1;
2688
+ -webkit-transform: scale3d(1, 1, 1);
2689
+ transform: scale3d(1, 1, 1);
2690
+ }
2691
+ }
2692
+
2693
+ @keyframes bounceIn {
2694
+ 0%, 20%, 40%, 60%, 80%, 100% {
2695
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
2696
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
2697
+ }
2698
+ 0% {
2699
+ opacity: 0;
2700
+ -webkit-transform: scale3d(0.3, 0.3, 0.3);
2701
+ transform: scale3d(0.3, 0.3, 0.3);
2702
+ }
2703
+ 20% {
2704
+ -webkit-transform: scale3d(1.1, 1.1, 1.1);
2705
+ transform: scale3d(1.1, 1.1, 1.1);
2706
+ }
2707
+ 40% {
2708
+ -webkit-transform: scale3d(0.9, 0.9, 0.9);
2709
+ transform: scale3d(0.9, 0.9, 0.9);
2710
+ }
2711
+ 60% {
2712
+ opacity: 1;
2713
+ -webkit-transform: scale3d(1.03, 1.03, 1.03);
2714
+ transform: scale3d(1.03, 1.03, 1.03);
2715
+ }
2716
+ 80% {
2717
+ -webkit-transform: scale3d(0.97, 0.97, 0.97);
2718
+ transform: scale3d(0.97, 0.97, 0.97);
2719
+ }
2720
+ 100% {
2721
+ opacity: 1;
2722
+ -webkit-transform: scale3d(1, 1, 1);
2723
+ transform: scale3d(1, 1, 1);
2724
+ }
2725
+ }
2726
+
2727
+ #customize-theme-controls #sub-accordion-panel-style_manager_panel .customize-panel-description,
2728
+ #customize-theme-controls #sub-accordion-panel-theme_options_panel .customize-panel-description {
2729
+ display: block;
2730
+ }
2731
+
2732
+ #customize-theme-controls li#accordion-panel-style_manager_panel h3.accordion-section-title:before {
2733
+ position: relative;
2734
+ float: right;
2735
+ content: "";
2736
+ color: #aed2e5;
2737
+ font-family: dashicons;
2738
+ padding: 1px;
2739
+ margin-right: 28px;
2740
+ font-size: 17px;
2741
+ -webkit-font-smoothing: antialiased;
2742
+ }
2743
+
2744
+ #customize-theme-controls li#accordion-panel-style_manager_panel h3.accordion-section-title:before {
2745
+ font-size: 18px;
2746
+ color: #f8bc30;
2747
+ }
2748
+
2749
+ #customize-theme-controls li#accordion-section-sm_color_palettes_section h3.accordion-section-title:before {
2750
+ position: relative;
2751
+ float: right;
2752
+ content: "";
2753
+ color: #aed2e5;
2754
+ font-family: dashicons;
2755
+ padding: 1px;
2756
+ margin-right: 28px;
2757
+ font-size: 17px;
2758
+ -webkit-font-smoothing: antialiased;
2759
+ }
2760
+
2761
+ #customize-theme-controls li#accordion-section-sm_color_palettes_section h3.accordion-section-title {
2762
+ border-top: none;
2763
+ }
2764
+
2765
+ #customize-theme-controls li#accordion-section-sm_font_palettes_section h3.accordion-section-title:before {
2766
+ position: relative;
2767
+ float: right;
2768
+ content: "";
2769
+ color: #aed2e5;
2770
+ font-family: dashicons;
2771
+ padding: 1px;
2772
+ margin-right: 28px;
2773
+ font-size: 17px;
2774
+ -webkit-font-smoothing: antialiased;
2775
+ }
2776
+
2777
+ #customize-theme-controls li#accordion-section-sm_color_palettes_section h3.accordion-section-title:before,
2778
+ #customize-theme-controls li#accordion-section-sm_font_palettes_section h3.accordion-section-title:before {
2779
+ padding: 3px;
2780
+ margin-right: 5px;
2781
+ margin-top: -2px;
2782
+ }
2783
+
2784
+ #customize-theme-controls li#accordion-panel-theme_options_panel h3.accordion-section-title:before {
2785
+ position: relative;
2786
+ float: right;
2787
+ content: "";
2788
+ color: #aed2e5;
2789
+ font-family: dashicons;
2790
+ padding: 1px;
2791
+ margin-right: 28px;
2792
+ font-size: 17px;
2793
+ -webkit-font-smoothing: antialiased;
2794
+ }
2795
+
2796
+ #customize-theme-controls li#accordion-panel-theme_options_panel h3.accordion-section-title {
2797
+ border-bottom: 1px solid #ddd;
2798
+ border-left: none;
2799
+ border-right: none;
2800
+ margin: 0 0 15px 0;
2801
+ }
2802
+
2803
+ .color .disc {
2804
+ display: block;
2805
+ overflow: hidden;
2806
+ position: absolute;
2807
+ top: 0;
2808
+ right: 0;
2809
+ bottom: 0;
2810
+ left: 0;
2811
+ z-index: 15;
2812
+ pointer-events: none;
2813
+ opacity: 0;
2814
+ -webkit-transition: opacity .3s ease-in-out;
2815
+ transition: opacity .3s ease-in-out;
2816
+ }
2817
+
2818
+ .color .disc:after {
2819
+ content: "";
2820
+ -webkit-filter: blur(6px) saturate(0.7) brightness(1.1);
2821
+ filter: blur(6px) saturate(0.7) brightness(1.1);
2822
+ display: block;
2823
+ width: 200%;
2824
+ height: 200%;
2825
+ padding-top: 100%;
2826
+ position: absolute;
2827
+ top: -50%;
2828
+ left: -50%;
2829
+ -webkit-transform: scale(1);
2830
+ transform: scale(1);
2831
+ background-image: linear-gradient(330deg, transparent 50%, #ff8100 0), linear-gradient(300deg, transparent 50%, #ff5800 0), linear-gradient(270deg, transparent 50%, #c92323 0), linear-gradient(240deg, transparent 50%, #cc42a2 0), linear-gradient(210deg, transparent 50%, #9f49ac 0), linear-gradient(180deg, transparent 50%, #306cd3 0), linear-gradient(150deg, transparent 50%, #179067 0), linear-gradient(120deg, transparent 50%, #0eb5d6 0), linear-gradient(90deg, transparent 50%, #50b517 0), linear-gradient(60deg, transparent 50%, #ede604 0), linear-gradient(30deg, transparent 50%, #fc0 0), linear-gradient(0deg, transparent 50%, #feac00 0);
2832
+ background-clip: content-box,content-box,content-box,content-box,content-box,content-box,padding-box,padding-box,padding-box,padding-box,padding-box,padding-box;
2833
+ }
2834
+
2835
+ .color.altered .disc {
2836
+ opacity: 1;
2837
+ }
2838
+
2839
+ .customize-control-color .wp-picker-container .iris-picker .iris-palette-container {
2840
+ display: -webkit-box;
2841
+ display: -ms-flexbox;
2842
+ display: flex;
2843
+ width: 215px;
2844
+ }
2845
+
2846
+ .customize-control-color .wp-picker-container .iris-picker .iris-palette {
2847
+ width: auto !important;
2848
+ height: auto !important;
2849
+ -webkit-box-flex: 1;
2850
+ -ms-flex: 1 1 0px;
2851
+ flex: 1 1 0;
2852
+ float: none;
2853
+ }
2854
+
2855
+ .customize-control-color .wp-picker-container .iris-picker .iris-palette:after {
2856
+ content: "";
2857
+ display: block;
2858
+ padding-top: 100%;
2859
+ }
2860
+
2861
+ .c-color-palette {
2862
+ padding: 30px 20px 18px;
2863
+ }
2864
+
2865
+ [id="customize-control-sm_current_color_palette_control"][id] {
2866
+ margin-bottom: 0;
2867
+ }
2868
+
2869
+ [id="customize-control-sm_current_color_palette_control"][id] ~ .customize-control {
2870
+ background-color: #FFFFFF;
2871
+ margin-bottom: 0;
2872
+ padding: 24px 20px 0;
2873
+ }
2874
+
2875
+ #customize-control-sm_dark_color_primary_slider_control,
2876
+ #customize-control-sm_dark_color_secondary_slider_control,
2877
+ #customize-control-sm_dark_color_tertiary_slider_control {
2878
+ display: none !important;
2879
+ }
2880
+
2881
+ .sm_color_matrix {
2882
+ display: -webkit-box;
2883
+ display: -ms-flexbox;
2884
+ display: flex;
2885
+ -ms-flex-wrap: wrap;
2886
+ flex-wrap: wrap;
2887
+ margin-left: -15px;
2888
+ }
2889
+
2890
+ .sm_color_matrix > * {
2891
+ display: grid;
2892
+ grid-auto-rows: 2px;
2893
+ grid-auto-columns: 2px;
2894
+ -webkit-box-flex: 0;
2895
+ -ms-flex: 0 0 33.33333%;
2896
+ flex: 0 0 33.33333%;
2897
+ padding-top: 15px;
2898
+ padding-left: 15px;
2899
+ }
2900
+
2901
+ .sm_color_matrix > * > * {
2902
+ background-color: currentColor;
2903
+ border-radius: 50%;
2904
+ border: 1px solid #ccc;
2905
+ -webkit-animation-duration: 0.75s;
2906
+ animation-duration: 0.75s;
2907
+ -webkit-animation-name: bounceIn;
2908
+ animation-name: bounceIn;
2909
+ }
2910
+
2911
+ .sm_color_matrix > * > :nth-child(1) {
2912
+ grid-area: 16 / 12 / span 12 / span 12;
2913
+ }
2914
+
2915
+ .sm_color_matrix > * > :nth-child(2) {
2916
+ grid-area: 26 / 24 / span 4 / span 4;
2917
+ }
2918
+
2919
+ .sm_color_matrix > * > :nth-child(3) {
2920
+ grid-area: 13 / 24 / span 4 / span 4;
2921
+ }
2922
+
2923
+ .sm_color_matrix > * > :nth-child(4) {
2924
+ grid-area: 8 / 8 / span 8 / span 8;
2925
+ }
2926
+
2927
+ .sm_color_matrix > * > :nth-child(5) {
2928
+ grid-area: 32 / 8 / span 4 / span 4;
2929
+ }
2930
+
2931
+ .sm_color_matrix > * > :nth-child(6) {
2932
+ grid-area: 30 / 16 / span 8 / span 8;
2933
+ }
2934
+
2935
+ .sm_color_matrix > * > :nth-child(7) {
2936
+ grid-area: 4 / 20 / span 8 / span 8;
2937
+ }
2938
+
2939
+ .sm_color_matrix > * > :nth-child(8) {
2940
+ grid-area: 17 / 26 / span 8 / span 8;
2941
+ }
2942
+
2943
+ .sm_color_matrix > * > :nth-child(9) {
2944
+ grid-area: 22 / 2 / span 8 / span 8;
2945
+ }
2946
+
2947
+ .sm_color_matrix > * > :nth-child(10) {
2948
+ grid-area: 28 / 11 / span 2 / span 2;
2949
+ }
2950
+
2951
+ .sm_color_matrix > * > :nth-child(11) {
2952
+ grid-area: 9 / 31 / span 6 / span 6;
2953
+ }
2954
+
2955
+ .sm_color_matrix > * > :nth-child(11) {
2956
+ grid-area: 26 / 30 / span 9 / span 9;
2957
+ }
2958
+
2959
+ .sm_color_matrix > * > :nth-child(12) {
2960
+ grid-area: 17 / 7 / span 4 / span 4;
2961
+ }
2962
+
2963
+ .sm_color_matrix > * > :nth-child(13) {
2964
+ grid-area: 19 / 36 / span 6 / span 6;
2965
+ }
2966
+
2967
+ .sm_color_matrix > * > :nth-child(14) {
2968
+ grid-area: 12 / 18 / span 2 / span 2;
2969
+ }
2970
+
2971
+ .sm_color_matrix > * > :nth-child(n+15) {
2972
+ display: none;
2973
+ }
2974
+
2975
+ .sm-tabs {
2976
+ display: -webkit-box;
2977
+ display: -ms-flexbox;
2978
+ display: flex;
2979
+ -webkit-box-pack: justify;
2980
+ -ms-flex-pack: justify;
2981
+ justify-content: space-between;
2982
+ padding: 0 16px;
2983
+ text-align: center;
2984
+ border-bottom: 1px solid #DFE8EF;
2985
+ }
2986
+
2987
+ .sm-tabs__item {
2988
+ padding: 12px 0;
2989
+ margin-bottom: -1px;
2990
+ -ms-flex-preferred-size: 31%;
2991
+ flex-basis: 31%;
2992
+ font-size: 14px;
2993
+ color: #416B7E;
2994
+ opacity: 0.7;
2995
+ border-bottom: 3px solid transparent;
2996
+ cursor: pointer;
2997
+ -webkit-transition: all 0.2s ease;
2998
+ transition: all 0.2s ease;
2999
+ }
3000
+
3001
+ .sm-tabs__item:not(.sm-tabs__item--active):hover {
3002
+ color: #2A3B44;
3003
+ border-bottom-color: #E2E4E7;
3004
+ opacity: 1;
3005
+ }
3006
+
3007
+ .sm-tabs__item--active {
3008
+ color: #2A3B44;
3009
+ border-bottom-color: #57ABD5;
3010
+ opacity: 1;
3011
+ }
3012
+
3013
+ [id="sub-accordion-section-sm_color_palettes_section"] {
3014
+ display: -webkit-box !important;
3015
+ display: -ms-flexbox !important;
3016
+ display: flex !important;
3017
+ -webkit-box-orient: vertical;
3018
+ -webkit-box-direction: normal;
3019
+ -ms-flex-direction: column;
3020
+ flex-direction: column;
3021
+ padding: 12px 0 0 !important;
3022
+ overflow: hidden;
3023
+ }
3024
+
3025
+ [id="sub-accordion-section-sm_color_palettes_section"] #customize-control-sm_color_palette_control {
3026
+ -ms-flex-negative: 0;
3027
+ flex-shrink: 0;
3028
+ -webkit-box-flex: 1;
3029
+ -ms-flex-positive: 1;
3030
+ flex-grow: 1;
3031
+ overflow-y: scroll;
3032
+ margin-bottom: 0;
3033
+ padding-top: 12px;
3034
+ }
3035
+
3036
+ [id="sub-accordion-section-sm_color_palettes_section"] > * {
3037
+ -webkit-box-flex: 0;
3038
+ -ms-flex-positive: 0;
3039
+ flex-grow: 0;
3040
+ padding: 0 12px;
3041
+ }
3042
+
3043
+ [id="sub-accordion-section-sm_color_palettes_section"] [id="customize-control-sm_current_color_palette_control"] ~ * {
3044
+ display: none !important;
3045
+ }
3046
+
3047
+ [id="sub-accordion-section-sm_color_palettes_section"] [id="customize-control-sm_palettes_description_control"] span,
3048
+ [id="sub-accordion-section-sm_color_palettes_section"] [id="customize-control-sm_filters_description_control"] span,
3049
+ [id="sub-accordion-section-sm_color_palettes_section"] [id="customize-control-sm_customize_description_control"] span {
3050
+ margin: 0;
3051
+ }
3052
+
3053
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-palettes [id="customize-control-sm_palettes_description_control"],
3054
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-palettes [id="customize-control-sm_color_palette_control"] {
3055
+ display: block !important;
3056
+ }
3057
+
3058
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-filters [id="customize-control-sm_filters_description_control"],
3059
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-filters [id="customize-control-sm_palette_filter_control"] {
3060
+ display: block !important;
3061
+ }
3062
+
3063
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize [id="customize-control-sm_customize_description_control"],
3064
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize [id="customize-control-sm_coloration_level_control"],
3065
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize [id="customize-control-sm_color_diversity_control"],
3066
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize [id="customize-control-sm_shuffle_colors_control"],
3067
+ [id="sub-accordion-section-sm_color_palettes_section"].sm-view-customize [id="customize-control-sm_dark_mode_control"] {
3068
+ display: block !important;
3069
+ }
3070
+
3071
+ [id="sub-accordion-section-sm_color_palettes_section"] [id="customize-control-sm_spacing_bottom_control"][id] {
3072
+ display: block !important;
3073
+ min-height: 24px;
3074
+ -webkit-box-flex: 1;
3075
+ -ms-flex-positive: 1;
3076
+ flex-grow: 1;
3077
+ }
3078
+
3079
+ [id="customize-control-sm_color_palette_control"] .customize-control-title, [id="customize-control-sm_color_palette_control"] .separator.label,
3080
+ [id="customize-control-sm_color_palette_control"] .customize-control-description {
3081
+ display: none;
3082
+ }
3083
+
3084
+ .customize-control-radio[class][id="customize-control-sm_palette_filter_control"] > .customize-inside-control-row:not(:only-of-type) {
3085
+ display: block;
3086
+ width: auto;
3087
+ }
3088
+
3089
+ .color[class*="sm_color"][class*="_connected"], .color[class*="sm_dark"][class*="_connected"], .color[class*="sm_light"][class*="_connected"] {
3090
+ display: none;
3091
+ }
3092
+
3093
+ .c-color-palette__colors {
3094
+ position: relative;
3095
+ }
3096
+
3097
+ .c-color-palette canvas, .c-color-palette svg {
3098
+ max-width: 100%;
3099
+ height: auto;
3100
+ }
3101
+
3102
+ .c-color-palette__fields {
3103
+ position: absolute;
3104
+ top: 100%;
3105
+ left: 0;
3106
+ right: 0;
3107
+ z-index: 100;
3108
+ }
3109
+
3110
+ [id="sub-accordion-section-sm_color_palettes_section"] > .customize-section-description-container {
3111
+ margin-bottom: 0;
3112
+ border-bottom: 1px solid #DFE8EF;
3113
+ }
3114
+
3115
+ .sm-palette-filter .colors {
3116
+ width: auto;
3117
+ height: auto;
3118
+ padding: 10px 10px;
3119
+ border-radius: 999em;
3120
+ }
3121
+
3122
+ .sm-palette-filter .picker:after {
3123
+ -webkit-box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.2);
3124
+ box-shadow: inset 0 0 3px 0 rgba(0, 0, 0, 0.2);
3125
+ }
3126
+
3127
+ .sm-palette-filter > label {
3128
+ position: relative;
3129
+ display: block;
3130
+ margin: 0 0 10px;
3131
+ }
3132
+
3133
+ .sm-palette-filter > label:hover .filter-label {
3134
+ opacity: 1;
3135
+ }
3136
+
3137
+ .sm-palette-filter > input {
3138
+ display: none;
3139
+ }
3140
+
3141
+ .sm-palette-filter .filter-label {
3142
+ position: absolute;
3143
+ top: 0;
3144
+ left: 0;
3145
+ z-index: 10;
3146
+ width: 100%;
3147
+ height: 100%;
3148
+ display: -webkit-box;
3149
+ display: -ms-flexbox;
3150
+ display: flex;
3151
+ -webkit-box-align: center;
3152
+ -ms-flex-align: center;
3153
+ align-items: center;
3154
+ -webkit-box-pack: center;
3155
+ -ms-flex-pack: center;
3156
+ justify-content: center;
3157
+ opacity: 0;
3158
+ -webkit-transition: opacity .2s ease-out;
3159
+ transition: opacity .2s ease-out;
3160
+ }
3161
+
3162
+ .sm-palette-filter .filter-label span {
3163
+ position: relative;
3164
+ z-index: 20;
3165
+ }
3166
+
3167
+ .sm-palette-filter .filter-label:after {
3168
+ content: "";
3169
+ display: block;
3170
+ position: absolute;
3171
+ top: 0;
3172
+ left: 0;
3173
+ z-index: 10;
3174
+ width: 100%;
3175
+ height: 100%;
3176
+ background-color: #ffffff;
3177
+ -webkit-box-shadow: #d6e0e5 0 0 0 1px;
3178
+ box-shadow: #d6e0e5 0 0 0 1px;
3179
+ border-radius: 999em;
3180
+ }
3181
+
3182
+ .sm-palette-filter > input:checked + label .filter-label:after {
3183
+ background-color: #f7f9fa;
3184
+ -webkit-box-shadow: none;
3185
+ box-shadow: none;
3186
+ }
3187
+
3188
+ .sm-palette-filter > input:checked + label .colors {
3189
+ background-color: #f7f9fa;
3190
+ -webkit-box-shadow: #57ABD5 0 0 0 2px;
3191
+ box-shadow: #57ABD5 0 0 0 2px;
3192
+ }
3193
+
3194
+ .customize-control-sm_palette_filter .customize-control-title, .customize-control-sm_palette_filter .separator.label {
3195
+ display: none;
3196
+ }
3197
+
3198
+ #customize-control-sm_font_palette_control ~ .customize-control {
3199
+ display: none !important;
3200
+ }
3201
+
3202
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row {
3203
+ height: auto;
3204
+ padding-top: 52%;
3205
+ background-color: white;
3206
+ border-radius: 6px;
3207
+ overflow: hidden;
3208
+ }
3209
+
3210
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row:before {
3211
+ border: 1px solid #DFE8EF;
3212
+ border-radius: 6px;
3213
+ }
3214
+
3215
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row:before, .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row:hover:before {
3216
+ -webkit-box-shadow: 0 1px 0 0 #B8DAEB;
3217
+ box-shadow: 0 1px 0 0 #B8DAEB;
3218
+ }
3219
+
3220
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row input {
3221
+ display: none;
3222
+ }
3223
+
3224
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row label {
3225
+ border-radius: 6px;
3226
+ left: 0;
3227
+ }
3228
+
3229
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row input + label {
3230
+ border: 2px solid transparent;
3231
+ }
3232
+
3233
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row input:checked + label {
3234
+ border-color: #57ABD5;
3235
+ }
3236
+
3237
+ .pix_customizer_setting .font_palette[class][class] .customize-inside-control-row .label__inner {
3238
+ display: none;
3239
+ }
3240
+
3241
+ #customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),
3242
  #customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,
3243
+ #customize-theme-controls .control-section-nav_menu_locations .accordion-section-title {
3244
+ border-top: 0;
 
3245
  }
customify.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Customify
4
  Plugin URI: https://wordpress.org/plugins/customify/
5
  Description: A Theme Customizer Booster to easily customize Fonts, Colors, and other options for your site.
6
- Version: 2.3.5.1
7
  Author: Pixelgrade
8
  Author URI: https://pixelgrade.com
9
  Author Email: contact@pixelgrade.com
@@ -12,7 +12,7 @@ License: GPL-2.0+
12
  License URI: http://www.gnu.org/licenses/gpl-2.0.txt
13
  Domain Path: /languages/
14
  Requires at least: 4.9.9
15
- Tested up to: 5.2.0
16
  */
17
 
18
  // If this file is called directly, abort.
@@ -32,7 +32,7 @@ require_once 'includes/extras.php';
32
  function PixCustomifyPlugin() {
33
  require_once plugin_dir_path( __FILE__ ) . 'includes/class-pixcustomify.php';
34
 
35
- return PixCustomifyPlugin::instance( __FILE__, '2.3.5.1' );
36
  }
37
 
38
  // Now get the party started
3
  Plugin Name: Customify
4
  Plugin URI: https://wordpress.org/plugins/customify/
5
  Description: A Theme Customizer Booster to easily customize Fonts, Colors, and other options for your site.
6
+ Version: 2.4.0
7
  Author: Pixelgrade
8
  Author URI: https://pixelgrade.com
9
  Author Email: contact@pixelgrade.com
12
  License URI: http://www.gnu.org/licenses/gpl-2.0.txt
13
  Domain Path: /languages/
14
  Requires at least: 4.9.9
15
+ Tested up to: 5.2.2
16
  */
17
 
18
  // If this file is called directly, abort.
32
  function PixCustomifyPlugin() {
33
  require_once plugin_dir_path( __FILE__ ) . 'includes/class-pixcustomify.php';
34
 
35
+ return PixCustomifyPlugin::instance( __FILE__, '2.4.0' );
36
  }
37
 
38
  // Now get the party started
features/customizer/controls/class-Pix_Customize_Background_Control.php CHANGED
@@ -156,6 +156,10 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
156
  'inherit' => 'Inherit',
157
  );
158
 
 
 
 
 
159
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-repeat]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-repeat" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-repeat]">';
160
  echo '<option></option>';
161
  foreach ( $array as $k => $v ) {
@@ -171,6 +175,11 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
171
  'content-box' => 'Content Box',
172
  'padding-box' => 'Padding Box',
173
  );
 
 
 
 
 
174
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-clip]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-clip" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-clip]">';
175
  echo '<option></option>';
176
 
@@ -187,6 +196,11 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
187
  'content-box' => 'Content Box',
188
  'padding-box' => 'Padding Box',
189
  );
 
 
 
 
 
190
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-origin]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-origin" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-origin]">';
191
  echo '<option></option>';
192
 
@@ -202,7 +216,12 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
202
  'cover' => 'Cover',
203
  'contain' => 'Contain',
204
  );
205
- echo '<select id="' . $this->id . '-repeat-select" name="' . $this->label . '[background-size]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-size" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-size]">';
 
 
 
 
 
206
  echo '<option></option>';
207
 
208
  foreach ( $array as $k => $v ) {
@@ -217,6 +236,11 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
217
  'scroll' => 'Scroll',
218
  'inherit' => 'Inherit',
219
  );
 
 
 
 
 
220
  echo '<select id="' . $this->id . '-attachment-select" name="' . $this->setting->id . '[background-attachment]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-attachment" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-attachment]">';
221
  echo '<option></option>';
222
  foreach ( $array as $k => $v ) {
@@ -237,6 +261,11 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
237
  'right center' => 'Right center',
238
  'right bottom' => 'Right Bottom',
239
  );
 
 
 
 
 
240
  echo '<select id="' . $this->id . '-position-select" name="' . $this->setting->id . '[background-position]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-position" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-position]">';
241
  echo '<option></option>';
242
 
@@ -250,4 +279,4 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
250
  static function css_output() {
251
 
252
  }
253
- }
156
  'inherit' => 'Inherit',
157
  );
158
 
159
+ if ( ! isset( $this->value['background-repeat'] ) ) {
160
+ $this->value['background-repeat'] = '';
161
+ }
162
+
163
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-repeat]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-repeat" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-repeat]">';
164
  echo '<option></option>';
165
  foreach ( $array as $k => $v ) {
175
  'content-box' => 'Content Box',
176
  'padding-box' => 'Padding Box',
177
  );
178
+
179
+ if ( ! isset( $this->value['background-clip'] ) ) {
180
+ $this->value['background-clip'] = '';
181
+ }
182
+
183
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-clip]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-clip" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-clip]">';
184
  echo '<option></option>';
185
 
196
  'content-box' => 'Content Box',
197
  'padding-box' => 'Padding Box',
198
  );
199
+
200
+ if ( ! isset( $this->value['background-origin'] ) ) {
201
+ $this->value['background-origin'] = '';
202
+ }
203
+
204
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-origin]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-origin" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-origin]">';
205
  echo '<option></option>';
206
 
216
  'cover' => 'Cover',
217
  'contain' => 'Contain',
218
  );
219
+
220
+ if ( ! isset( $this->value['background-size'] ) ) {
221
+ $this->value['background-size'] = '';
222
+ }
223
+
224
+ echo '<select id="' . $this->id . '-repeat-select" name="' . esc_attr( $this->label ) . '[background-size]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-size" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-size]">';
225
  echo '<option></option>';
226
 
227
  foreach ( $array as $k => $v ) {
236
  'scroll' => 'Scroll',
237
  'inherit' => 'Inherit',
238
  );
239
+
240
+ if ( ! isset( $this->value['background-attachment'] ) ) {
241
+ $this->value['background-attachment'] = '';
242
+ }
243
+
244
  echo '<select id="' . $this->id . '-attachment-select" name="' . $this->setting->id . '[background-attachment]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-attachment" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-attachment]">';
245
  echo '<option></option>';
246
  foreach ( $array as $k => $v ) {
261
  'right center' => 'Right center',
262
  'right bottom' => 'Right Bottom',
263
  );
264
+
265
+ if ( ! isset( $this->value['background-position'] ) ) {
266
+ $this->value['background-position'] = '';
267
+ }
268
+
269
  echo '<select id="' . $this->id . '-position-select" name="' . $this->setting->id . '[background-position]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-position" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-position]">';
270
  echo '<option></option>';
271
 
279
  static function css_output() {
280
 
281
  }
282
+ }
features/customizer/controls/class-Pix_Customize_Import_Demo_Data_Control.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Class Pix_Customize_Import_Demo_Data_Control
5
- *
6
- */
7
- class Pix_Customize_Import_Demo_Data_Control extends Pix_Customize_Control {
8
- public $type = 'import_demo_data';
9
- public $action = null;
10
- public $notices = array();
11
-
12
- /**
13
- * Render the control's content.
14
- *
15
- * @since 3.4.0
16
- */
17
- public function render_content() {?>
18
-
19
- <a href="#" class="button button-primary customify_import_demo_data_button" data-key="<?php echo $this->setting->id ?>"><?php echo $this->label ?></a>
20
-
21
- <div class="wpGrade-loading-wrap hidden">
22
- <span class="wpGrade-loading wpGrade-import-loading"></span>
23
- <div class="wpGrade-import-wait">
24
- <?php
25
- if ( isset( $this->notices['wait'] ) ) {
26
-
27
- echo wp_kses( $this->notices['wait'], array(
28
- 'a' => array(
29
- 'href' => array(),
30
- 'title' => array()
31
- ),
32
- 'br' => array(),
33
- 'em' => array(),
34
- 'strong' => array(),
35
- 'p' => array(),
36
- 'div' => array( 'class', 'id' ),
37
- 'span' => array( 'class', 'id' ),
38
- ) );
39
-
40
- } else {
41
- esc_html_e( 'Please wait a few minutes (between 1 and 3 minutes usually, but depending on your hosting it can take longer) and ', 'customify' ); ?>
42
- <strong><?php esc_html_e( 'don\'t reload the page', 'customify' ); ?></strong>
43
- <?php esc_html__( 'You will be notified as soon as the import has finished!', 'customify' );
44
- } ?>
45
- </div>
46
- </div>
47
-
48
- <?php if ( ! empty( $this->description ) ) { ?>
49
- <span class="description customize-control-description"><?php echo $this->description; ?></span>
50
- <?php } ?>
51
-
52
- <div class="wpGrade-import-results hidden"></div>
53
- <div class="hr">
54
- <div class="inner"><span>&nbsp;</span></div>
55
- </div>
56
- <?php }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin-notifications-manager/admin-notice-manager.css DELETED
@@ -1,29 +0,0 @@
1
- /* Styling for Pixcloud Admin Notice Manager */
2
-
3
- /* Style redirect button to look like link */
4
- .pixcloud_anm-link {
5
- color: #0073aa;
6
- padding: 0;
7
- margin: 0;
8
- border-style: none;
9
- background: none;
10
- outline: 0;
11
- transition-property: border, background, color;
12
- transition-duration: .05s;
13
- transition-timing-function: ease-in-out;
14
- text-decoration: underline;
15
- }
16
-
17
- .pixcloud_anm-link:active {
18
- color: #00a0d2;
19
- }
20
-
21
- .pixcloud_anm-link:hover {
22
- color: #00a0d2;
23
- cursor: pointer;
24
- }
25
-
26
- .pixcloud_anm-link:focus {
27
- color: #124964;
28
- box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin-notifications-manager/admin-notice-manager.js DELETED
@@ -1,80 +0,0 @@
1
- (function( $ ) {
2
- 'use strict';
3
-
4
- /**
5
- * Javascript for Admin Notice Manager
6
- */
7
-
8
- // On document ready
9
- $( function() {
10
-
11
- var redirectUrl = '';
12
- var dismissEvent = '';
13
- var redirectNewTab = false;
14
-
15
- // Send ajax
16
- function ajaxDismiss( dismissElement ) {
17
- var container = dismissElement.closest( '.notice' );
18
- var noticeID = container.find('.pixcloud_anm-notice-id').val();
19
- var data = {
20
- action : container.find( '.pixcloud_anm-id' ).val() + '_dismiss_admin_notice',
21
- noticeID : noticeID
22
- };
23
- data['nonce-pixcloud_anm-' + noticeID] = container.find( '#nonce-pixcloud_anm-' + noticeID ).val();
24
- if ( dismissEvent.length ) {
25
- data['pixcloud_anm-event'] = dismissEvent;
26
- }
27
- $.ajax({
28
- url: ajaxurl,
29
- type: 'post',
30
- data: data
31
- });
32
- }
33
-
34
- // Dismiss notice
35
- function dismissNotice( dismissElement ) {
36
- var container = dismissElement.closest( '.notice' );
37
- container.fadeTo( 100, 0, function() {
38
- container.slideUp( 100, function() {
39
- container.remove();
40
- });
41
- });
42
- }
43
-
44
- // Send ajax on click of dismiss icon
45
- $( 'body' ).on( 'click', '.notice-manager-ajax .notice-dismiss', function() {
46
- ajaxDismiss( $(this) );
47
- });
48
-
49
- // On click of dismiss element, set redirect url or event and trigger ajax dismiss
50
- $( 'body' ).on( 'click', '.pixcloud_anm-dismiss', function() {
51
- if ( 'pixcloud_anm-redirect' == $(this).attr('name') ) {
52
- redirectUrl = $(this).val();
53
- if ( $(this).data( 'newtab' ) ) {
54
- redirectNewTab = true;
55
- }
56
- } else if ( 'pixcloud_anm-event' == $(this).attr('name') ) {
57
- dismissEvent = $(this).val();
58
- }
59
- ajaxDismiss( $(this) );
60
- dismissNotice( $(this) );
61
- });
62
-
63
- // Prevent form submit and redirect if url has been set
64
- $( 'body' ).on( 'submit', '.pixcloud_anm-form', function(evt) {
65
- evt.preventDefault();
66
- if ( redirectUrl.length > 0 ) {
67
- setTimeout( function() {
68
- if ( redirectNewTab ) {
69
- window.open( redirectUrl, '_blank' );
70
- } else {
71
- window.location.href = redirectUrl;
72
- }
73
- }, 100 );
74
- }
75
- return false;
76
- });
77
-
78
- });
79
-
80
- })( jQuery );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin-notifications-manager/class-admin-notifications-manager.php DELETED
@@ -1,1300 +0,0 @@
1
- <?php
2
-
3
- /**
4
- *
5
- * A class to handle the display and dismissal of pixcloud admin notices.
6
- *
7
- * This class started from this one https://github.com/jlad26/admin-notice-manager/blob/master/admin-notice-manager/class-admin-notice-manager.php
8
- *
9
- */
10
- class Pixcloud_Admin_Notifications_Manager {
11
-
12
- /**
13
- * Holds the only instance of this class.
14
- * @var null|Pixcloud_Admin_Notifications_Manager
15
- * @access protected
16
- * @since 1.9.0
17
- */
18
- protected static $_instance = null;
19
-
20
- /**
21
- * The unique identifier of this admin notice manager.
22
- *
23
- * @access protected
24
- * @since 1.9.0
25
- * @var string $manager_id The string used to uniquely identify this manager.
26
- * Used as a prefix to keys when storing in usermeta.
27
- */
28
- protected $manager_id;
29
-
30
- /**
31
- * The version of this plugin.
32
- *
33
- * @access protected
34
- * @since 1.9.0
35
- * @var string $version The current version of the parent plugin.
36
- */
37
- protected $version;
38
-
39
- /**
40
- * The url to the assets directory.
41
- *
42
- * @access protected
43
- * @since 1.9.0
44
- * @var string $url_to_assets_dir Url to the directory where the files admin-notice-manager.js and
45
- * admin-notice-manager.css are located. Must include trailing slash.
46
- */
47
- protected $url_to_assets_dir;
48
-
49
- /**
50
- * The text domain for translation.
51
- *
52
- * @access protected
53
- * @since 1.9.0
54
- * @var string $text_domain Text domain for translation.
55
- */
56
- protected $text_domain;
57
-
58
- /**
59
- * Notifications to be processed and maybe displayed.
60
- *
61
- * @access protected
62
- * @since 1.9.0
63
- * @var array $notifications
64
- */
65
- protected $notifications = array();
66
-
67
- /**
68
- * The supported notification types and their conversions.
69
- *
70
- * @access protected
71
- * @since 1.9.0
72
- * @var array
73
- */
74
- protected $types = array(
75
- 'info' => 'info',
76
- 'standard_info' => 'info',
77
- 'success' => 'success',
78
- 'standard_success' => 'success',
79
- 'warning' => 'warning',
80
- 'standard_warning' => 'warning',
81
- 'error' => 'error',
82
- 'standard_error' => 'error',
83
- 'custom' => 'custom',
84
- );
85
-
86
- /**
87
- * Constructor.
88
- *
89
- * @since 1.9.0
90
- *
91
- * @param array $args
92
- */
93
- protected function __construct( $args = array() ) {
94
- $this->init( $args );
95
- }
96
-
97
- /**
98
- * Initialize the notifications manager.
99
- *
100
- * @since 1.9.0
101
- *
102
- * @param array $args {
103
- *
104
- * @type string $manager_id Unique id for this manager. Used as a prefix for database keys.
105
- * @type string $plugin_name Name of the parent plugin.
106
- * @type string $url_to_assets_dir Path to directory containing admin-notice-manager.js.
107
- * @type string $text_domain Text domain for translation.
108
- * @type string $version Plugin version.
109
- * @type array $notifications Array of array of notifications with keys the notification id
110
- * }
111
- */
112
- public function init( array $args ) {
113
- // We will only initialize in the WP dashboard (admin area).
114
- if ( ! is_admin() ) {
115
- return;
116
- }
117
-
118
- $defaults = array(
119
- 'manager_id' => 'pixcloud_anm',
120
- 'plugin_name' => 'Unnamed plugin',
121
- 'url_to_assets_dir' => '',
122
- 'text_domain' => 'default',
123
- 'version' => '',
124
- 'notifications' => array(),
125
- );
126
-
127
- $args = wp_parse_args( $args, $defaults );
128
-
129
- // Set manager id, text domain and version.
130
- $this->manager_id = empty( $args['manager_id'] ) ? 'pixcloud_anm' : $args['manager_id'];
131
- $this->text_domain = $args['text_domain'];
132
- $this->version = $args['version'];
133
- $this->plugin_name = $args['plugin_name'];
134
- $this->notifications = $args['notifications'];
135
-
136
- // Add hooks, but only if we are not uninstalling the plugin.
137
- if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
138
- $this->add_hooks();
139
- }
140
-
141
- // Set url to js directory, adding trailing slash if needed. Defaults to this file's directory.
142
- if ( empty( $args['url_to_assets_dir'] ) ) {
143
- $args['url_to_assets_dir'] = plugin_dir_url( __FILE__ );
144
- }
145
- if ( '/' != substr( $args['url_to_assets_dir'], - 1 ) ) {
146
- $args['url_to_assets_dir'] .= '/';
147
- }
148
- $this->url_to_assets_dir = $args['url_to_assets_dir'];
149
-
150
- // Make sure that the conditions processing logic is loaded.
151
- require_once 'class-notification-conditions.php';
152
- }
153
-
154
- /**
155
- * Initiate our hooks.
156
- *
157
- * @since 1.9.0
158
- */
159
- public function add_hooks() {
160
- // Add action to load remote notifications.
161
- add_action( 'admin_init', array( $this, 'maybe_load_remote_notifications' ) );
162
-
163
- // Add actions to display notices as needed.
164
- add_action( 'admin_notices', array( $this, 'display_notices' ) );
165
-
166
- // Add JS and ajax processing to handle dismissal of persistent notices.
167
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
168
- add_action( 'wp_ajax_' . $this->manager_id . '_dismiss_admin_notice', array( $this, 'dismiss_notice' ) );
169
-
170
- // Add notifications data to requests.
171
- add_filter( 'customify_pixelgrade_cloud_request_data', array( $this, 'add_data_to_request' ), 10, 1 );
172
- }
173
-
174
- public function maybe_load_remote_notifications() {
175
- if ( empty( $this->notifications ) ) {
176
- $this->notifications = $this->convert_remote_notifications_config( $this->get_remote_notifications_config() );
177
- }
178
- }
179
-
180
- /**
181
- * Get the remote notifications configuration.
182
- *
183
- * @since 1.9.0
184
- *
185
- * @param bool $skip_cache Optional. Whether to use the cached config or fetch a new one.
186
- *
187
- * @return array
188
- */
189
- public function get_remote_notifications_config( $skip_cache = false ) {
190
- // Make sure that the Design Assets class is loaded.
191
- require_once dirname(__FILE__ ) . '/../lib/class-customify-design-assets.php';
192
-
193
- // Get the design assets data.
194
- $design_assets = Customify_Design_Assets::instance()->get( $skip_cache );
195
- if ( false === $design_assets || empty( $design_assets['notifications'] ) ) {
196
- $notifications_config = array();
197
- } else {
198
- $notifications_config = $design_assets['notifications'];
199
- }
200
-
201
- return apply_filters( 'customify_get_remote_notifications', $notifications_config );
202
- }
203
-
204
- public function convert_remote_notifications_config( $notifications_config ) {
205
- $notifications = array();
206
- if ( empty( $notifications_config ) || ! is_array( $notifications_config ) ) {
207
- return $notifications;
208
- }
209
-
210
- foreach ( $notifications_config as $notification_config ) {
211
- // Make sure we have something to work with.
212
- if ( empty( $notification_config['hashid'] ) || empty( $notification_config['options'] ) || ! is_array( $notification_config['options'] ) ) {
213
- continue;
214
- }
215
-
216
- $options = $notification_config['options'];
217
-
218
- $options['id'] = $notification_config['hashid'];
219
-
220
- // Make sure we support the notification type.
221
- if ( empty( $options['type']) || ! array_key_exists( $options['type'], $this->types ) ) {
222
- continue;
223
- }
224
- // Use the standard (converted) type.
225
- $options['type'] = $this->types[ $options['type'] ];
226
-
227
- // Handle the empty message.
228
- if ( empty( $options['message'] ) ) {
229
- continue;
230
- }
231
-
232
- // Parse the details.
233
- $notification = $this->parse_notice_args( $options );
234
-
235
- if ( ! empty( $notification ) ) {
236
- $notifications[ $notification_config['hashid'] ] = $notification;
237
- }
238
- }
239
-
240
- return $notifications;
241
- }
242
-
243
- /**
244
- * Parse notice args.
245
- *
246
- * @access protected
247
- * @since 1.9.0
248
- *
249
- * @param array $notice Array of user-set args
250
- *
251
- * @return array|false Notice with defaults validated and set as necessary, or false if values not validated.
252
- */
253
- protected function parse_notice_args( $notice ) {
254
- if ( empty( $notice ) ) {
255
- return false;
256
- }
257
-
258
- // Set the notice arguments using defaults where necessary. (user_ids should always be set for an opt out notice.)
259
- $defaults = array(
260
- 'type' => 'error',
261
- 'message' => '',
262
- 'container_classes' => array(),
263
- 'wrap_tag' => 'p',
264
- 'user_ids' => array(),
265
- 'screen_ids' => array(),
266
- 'post_ids' => array(),
267
- 'persistent' => false,
268
- 'dismissable' => true,
269
- 'no_js_dismissable' => false,
270
- 'dismiss_for_all_users' => false,
271
- );
272
-
273
- $notice = wp_parse_args( $notice, $defaults );
274
-
275
- // Set the notice id if not already set.
276
- if ( ! isset( $notice['id'] ) ) {
277
- $notice['id'] = md5( $notice['message'] . $notice['type'] );
278
- }
279
-
280
- // Set the screen ids if not already set. (Will always already be set for opt out notices.)
281
- if ( ! isset( $notice['screen_ids'] ) ) {
282
-
283
- // Default is generally all screens...
284
- $notice['screen_ids'] = array();
285
-
286
- // ...but for persistent notices we set default to current screen if we can
287
- if ( $notice['persistent'] && $screen_id = $this->get_current_screen_id() ) {
288
- $notice['screen_ids'] = array( $screen_id );
289
- }
290
- }
291
-
292
- // If notice is not dismissable, set no-js-dismissable to false as well.
293
- if ( ! $notice['dismissable'] ) {
294
- $notice['no_js_dismissable'] = false;
295
- }
296
-
297
- // Validate all values.
298
- foreach ( $notice as $key => $value ) {
299
-
300
- switch ( $key ) {
301
- case 'id' :
302
- if ( ! is_string( $value ) && ! is_int( $value ) ) {
303
- return false;
304
- }
305
- break;
306
- case 'message' :
307
- if ( ! is_string( $value ) && ! is_array( $value ) ) {
308
- return false;
309
- }
310
- if ( empty( $value ) ) {
311
- return false;
312
- }
313
- break;
314
- case 'wrap_tag' :
315
- if ( ! is_string( $value ) ) {
316
- return false;
317
- }
318
- break;
319
- case 'user_ids' :
320
- if ( ! is_array( $value ) ) {
321
- return false;
322
- } else {
323
- foreach ( $value as $user_info ) {
324
- if ( ! is_int( $user_info ) && ! is_string( $user_info ) ) {
325
- return false;
326
- break;
327
- }
328
- }
329
- }
330
- break;
331
- case 'screen_ids' :
332
- if ( ! is_array( $value ) ) {
333
- return false;
334
- } else {
335
- foreach ( $value as $screen_id ) {
336
- if ( ! is_string( $screen_id ) ) {
337
- return false;
338
- break;
339
- }
340
- }
341
- }
342
- break;
343
- case 'post_ids' :
344
- if ( ! is_array( $value ) ) {
345
- return false;
346
- } else {
347
- foreach ( $value as $post_id ) {
348
- if ( ! is_int( $post_id ) ) {
349
- return false;
350
- break;
351
- }
352
- }
353
- }
354
- break;
355
- case 'persistent' :
356
- case 'dismissable' :
357
- case 'dismiss_for_all_users' :
358
- if ( ! is_bool( $value ) ) {
359
- return false;
360
- }
361
- break;
362
- default:
363
- break;
364
- }
365
- }
366
-
367
- return $notice;
368
- }
369
-
370
- /**
371
- * Enqueue scripts and styles.
372
- *
373
- * @param string $hook Hook
374
- *
375
- * @hooked admin_enqueue_scripts
376
- */
377
- public function enqueue_scripts( $hook ) {
378
- // Note that handle is not specific to the manager id so if we are using two plugins with the notice manager files are only loaded once.
379
- wp_enqueue_script( 'pixcloud-admin-notice-manager-js', $this->url_to_assets_dir . 'admin-notice-manager.js', array( 'jquery' ), $this->version );
380
- wp_enqueue_style( 'pixcloud-admin-notice-manager-css', $this->url_to_assets_dir . 'admin-notice-manager.css', array(), $this->version );
381
- }
382
-
383
- /**
384
- * Add a notification.
385
- *
386
- * @since 1.9.0
387
- *
388
- * @param array $notice {
389
- * @type string $id Unique id for this notice. Default is hashed value of some of the notice parameters.
390
- * Setting an id is recommended however - otherwise non-unique ids are possible and may
391
- * cause unexpected deletion of notices. Updating messages when they are changed by the
392
- * developer gets fiddly too.
393
- * @type string $message Message to be displayed.
394
- * @type string $wrap_tag Tag to wrap message in. Default is 'p'. Set to empty string or false for no wrap.
395
- * @type string $type One of 'success', 'error', warning', 'info'. Default is 'error'.
396
- * @type array $user_ids Empty array means all users. Default is all users (not current user).
397
- * For example: array( 3, 'administrator', 55, 153, 'editors' ) will set the message
398
- * for users with ids of 3, 55 and 153, and for all users that are administrators or editors.
399
- * @type array $screen_ids Array of screen ids on which message should be displayed.
400
- * Set to empty array for all screens. If left unset the current screen is set if possible,
401
- * it is recommended to explicitly specify the desired screen rather than leaving unset.
402
- * If during testing the notice is set on a screen that is then not viewed because of a redirect
403
- * (e.g. options), changing the screen in the notice args will have no effect because the notice
404
- * has been stored in the db and will not be updated.
405
- * Default is all screens (empty array).
406
- * @type array $post_ids Array of post ids on which message should be displayed. Empty array means all posts.
407
- * Default is all posts.
408
- * @type string $persistent True for persistent, false for one-time. Default is false.
409
- * @type bool $dismissable Whether notice is dismissable. Default is true.
410
- * @type bool $no_js_dismissable Whether to give option to dismiss notice if no js. Only applies when $dismissable is true.
411
- * Default is false. Caution should be used in setting this to true. The act of dismissing the
412
- * notice refreshes the screen so any changed data on screen will be lost. This could be extremely
413
- * frustrating for a user who has just entered or updated loads of data (e.g., when editing a post).
414
- * @type bool $dismiss_for_all_users Whether to delete notice for all users or just the user that has dismissed the notice.
415
- * Only applies when $dismissable is true. Default is false.
416
- * }
417
- * @return array|WP_Error|bool Notice that has been set by user, or error if notice has failed.
418
- */
419
- public function add_notification( array $notice ) {
420
-
421
- // If not set, set user ids to empty array to indicate all users.
422
- if ( ! isset( $notice['user_ids'] ) ) {
423
- $notice['user_ids'] = array();
424
- }
425
-
426
- // If required, set default screen ids to all screens.
427
- if ( ! isset( $notice['screen_ids'] ) ) {
428
- $notice['screen_ids'] = array();
429
- }
430
-
431
- $notice = $this->parse_notice_args( $notice );
432
-
433
- $notice_id = $notice['id'];
434
- unset( $notice['id'] );
435
-
436
- $notices = $this->notifications;
437
-
438
- // Add new notice to existing notices. NB this over-writes a notice with the same id.
439
- $notices[ $notice_id ] = $notice;
440
-
441
- // Update notices.
442
- $this->notifications = $notices;
443
-
444
- return $notice;
445
-
446
- }
447
-
448
- /**
449
- * Add notifications.
450
- *
451
- * @since 1.9.0
452
- *
453
- * @param array $notices Array of notices. If notice id is not set, key of array is used.
454
- *
455
- * @return array Array with keys as notice ids and values as either notice set or WP Error object.
456
- */
457
- public function add_notifications( array $notices ) {
458
-
459
- $results = array();
460
-
461
- foreach ( $notices as $key => $notice ) {
462
- if ( ! isset( $notice['id'] ) ) {
463
- $notice['id'] = $key;
464
- }
465
- $results[] = $this->add_notification( $notice );
466
- }
467
-
468
- return $results;
469
-
470
- }
471
-
472
- /**
473
- * Parse user ids, converting roles to user ids.
474
- *
475
- * @access protected
476
- * @since 1.9.0
477
- *
478
- * @param array $user_ids
479
- *
480
- * @return array $user_ids Parsed user ids
481
- */
482
- protected function parse_user_roles( array $user_ids ) {
483
-
484
- // Convert user roles to user ids and add them.
485
- if ( ! empty( $user_ids ) ) {
486
-
487
- $user_roles = array();
488
- foreach ( $user_ids as $key => $user_info ) {
489
- if ( is_string( $user_info ) ) {
490
- $user_roles[] = $user_info;
491
- unset( $user_ids[ $key ] );
492
- }
493
- }
494
- if ( ! empty( $user_roles ) ) {
495
- $args = array(
496
- 'count_total' => false,
497
- 'fields' => 'ID',
498
- 'role__in' => $user_roles,
499
- );
500
- $role_user_ids = get_users( $args );
501
-
502
- if ( ! empty( $role_user_ids ) ) {
503
- $user_ids = array_unique( array_merge( $user_ids, $role_user_ids ) );
504
- }
505
- }
506
- }
507
-
508
- return $user_ids;
509
-
510
- }
511
-
512
-
513
- /**
514
- * Get current screen id.
515
- *
516
- * @since 1.9.0
517
- *
518
- * @access protected
519
- * @return int $screen_id id of current screen, 0 if not available
520
- */
521
- protected function get_current_screen_id() {
522
- $screen_id = 0;
523
- if ( function_exists( 'get_current_screen' ) ) {
524
- $screen = get_current_screen();
525
- if ( ! empty( $screen ) ) {
526
- $screen_id = $screen->id;
527
- }
528
- }
529
-
530
- return $screen_id;
531
- }
532
-
533
- /**
534
- * Returns html for a dismiss on redirect link.
535
- *
536
- * @since 1.9.0
537
- *
538
- * @param array $args {
539
- *
540
- * @type string $content Html to display as link.
541
- * @type string $redirect Redirect url. Set as empty string for no redirect. Default is no redirect.
542
- * @type string $new_tab If true, link is opened in a new window / tab (equivalent to target="_blank". Default is false.
543
- * Only works on browsers with js enabled.
544
- * @type array $classes Array of classes for the button. Default is array( pixcloud_anm-link ) which styles as a link.
545
- * }
546
- * @return string Button html (styled by default as link)
547
- */
548
- public function dismiss_on_redirect_link( array $args ) {
549
-
550
- $defaults = array(
551
- 'content' => 'Undefined',
552
- 'redirect' => '',
553
- 'new_tab' => false,
554
- 'classes' => array( 'pixcloud_anm-link' ),
555
- );
556
-
557
- $args = wp_parse_args( $args, $defaults );
558
-
559
- $classes = array( 'pixcloud_anm-dismiss' );
560
- if ( ! empty( $args['classes'] ) && is_array( $args['classes'] ) ) {
561
- $classes = array_merge( $args['classes'], $classes );
562
- }
563
- $classes = implode( ' ', $classes );
564
-
565
- // Add button with value of redirect url.
566
- return '<button type="submit" class="' . $classes . '" name="pixcloud_anm-redirect" data-newtab="' . intval( $args['new_tab'] ) . '" value="' . esc_attr( $args['redirect'] ) . '">' . $args['content'] . '</button>';
567
-
568
- }
569
-
570
- /**
571
- * Returns html for button that triggers a specific action hook.
572
- *
573
- * @since 1.9.0
574
- *
575
- * @param array $args {
576
- *
577
- * @type string $content Html to display as button / link content.
578
- * @type string $event String to identify dismiss event. The action triggered will be
579
- * "{$manager_id}_user_notice_dismissed_{$notice_id}_{$event}" and the dismissing
580
- * user id is passed as an argument to the action. Leave unset for no specific action to be fired.
581
- * @type array $classes Array of classes for the button. Default is array( pixcloud_anm-link ) which styles as a link.
582
- * }
583
- * @return string
584
- */
585
- public function dismiss_event_button( array $args ) {
586
-
587
- $defaults = array(
588
- 'content' => 'Undefined',
589
- 'event' => '',
590
- 'classes' => array( 'pixcloud_anm-link' ),
591
- );
592
-
593
- $args = wp_parse_args( $args, $defaults );
594
-
595
- $classes = array( 'pixcloud_anm-dismiss', 'pixcloud_anm-event' );
596
- if ( ! empty( $args['classes'] ) && is_array( $args['classes'] ) ) {
597
- $classes = array_merge( $args['classes'], $classes );
598
- }
599
- $classes = implode( ' ', $classes );
600
-
601
- // Add button with value of event.
602
- return '<button type="submit" class="' . $classes . '" name="pixcloud_anm-event" value="' . esc_attr( $args['event'] ) . '">' . $args['content'] . '</button>';
603
-
604
- }
605
-
606
- /**
607
- * Display user notices.
608
- *
609
- * @since 1.9.0
610
- *
611
- * @hooked admin_notices
612
- */
613
- public function display_notices() {
614
-
615
- $screen_id = $this->get_current_screen_id();
616
- $user_id = get_current_user_id();
617
-
618
- $this->display_opt_out_notices( $screen_id, $user_id );
619
- }
620
-
621
- /**
622
- * Display opt out notices.
623
- *
624
- * @access protected
625
- * @since 1.9.0
626
- *
627
- * @param int $screen_id Current screen id (0 if not known).
628
- * @param int $user_id Current user id.
629
- */
630
- protected function display_opt_out_notices( $screen_id, $user_id ) {
631
-
632
- global $post;
633
- $post_id = is_object( $post ) ? $post->ID : 0;
634
-
635
- $notices = $this->notifications;
636
-
637
- if ( ! empty( $notices ) ) {
638
- $user_notifications_details = get_user_meta( $user_id, $this->manager_id . '_notifications', true );
639
-
640
- foreach ( $notices as $notice_id => $notice ) {
641
-
642
- $notice['id'] = $notice_id;
643
-
644
- // If screen ids have been specified, check whether notice should be displayed
645
- if ( ! empty( $notice['screen_ids'] ) ) {
646
- if ( ! in_array( $screen_id, $notice['screen_ids'] ) ) {
647
- continue;
648
- }
649
- }
650
-
651
- // If post ids have been specified, check whether notice should be displayed
652
- if ( ! empty( $notice['post_ids'] ) ) {
653
- if ( ! in_array( $post_id, $notice['post_ids'] ) ) {
654
- continue;
655
- }
656
- }
657
-
658
- // If user ids or roles have been specified, check whether notice should be displayed to the current user.
659
- if ( ! empty( $notice['user_ids'] ) ) {
660
- // Convert roles to user ids
661
- $user_ids = $this->parse_user_roles( $notice['user_ids'] );
662
-
663
- if ( ! in_array( $user_id, $user_ids ) ) {
664
- continue;
665
- }
666
- }
667
-
668
- // Check whether user has already dismissed this notice
669
- if ( ! empty( $user_notifications_details ) ) {
670
- if ( array_key_exists( $notice['id'], $user_notifications_details ) && ! empty( $user_notifications_details[ $notice['id'] ]['dismissed'] ) ) {
671
- continue;
672
- }
673
- }
674
-
675
- // Check the start and end dates.
676
- if ( ! empty( $notice['start_date'] ) && time() < strtotime( $notice['start_date'] ) ) {
677
- continue;
678
- }
679
- if ( ! empty( $notice['end_date'] ) && strtotime( $notice['end_date'] ) < time() ) {
680
- continue;
681
- }
682
-
683
- $display = true;
684
- // If the notice has local conditions, process them.
685
- if ( ! empty( $notice['local_conditions'] ) ) {
686
- $display = Pixcloud_Notification_Conditions::process( $notice['local_conditions'] );
687
- }
688
-
689
- // Display the notice with option to filter display.
690
- if ( true === apply_filters( $this->manager_id . '_display_notice', $display, $notice ) ) {
691
-
692
- if ( 'custom' !== $notice['type'] ) {
693
- $this->display_standard_notice( $notice );
694
- } else {
695
- $this->display_custom_notice( $notice );
696
- }
697
-
698
- // Register the notice display
699
- $this->register_user_notice_display( $notice['id'], $user_id );
700
-
701
- // Remove notice once viewed if this is a one-time notice.
702
- if ( ! $notice['persistent'] ) {
703
- $this->dismiss_notice_for_user( $notice['id'], $user_id );
704
- }
705
- }
706
- }
707
- }
708
- }
709
-
710
- /**
711
- * Display standard notice.
712
- *
713
- * @access protected
714
- * @since 1.9.0
715
- *
716
- * @param array $notice array of notice parameters.
717
- */
718
- protected function display_standard_notice( $notice ) {
719
-
720
- // Add classes to the notice container as needed.
721
- $container_classes = array(
722
- 'notice',
723
- 'notice-' . esc_attr( $notice['type'] ),
724
- );
725
- if ( $notice['dismissable'] ) {
726
- $container_classes[] = 'is-dismissible';
727
- }
728
- if ( $notice['persistent'] && $notice['dismissable'] ) {
729
- $container_classes[] = 'notice-manager-ajax';
730
- }
731
-
732
- // Parse any content tags.
733
- $notice['message'] = self::parse_content_tags( $notice['message'] );
734
-
735
- // Convert newlines to <br>s.
736
- $notice['message'] = nl2br( $notice['message'] );
737
-
738
- if ( ! empty( $notice['wrap_tag'] ) ) {
739
- $notice['message'] = '<' . $notice['wrap_tag'] . '>' . $notice['message'] . '</' . $notice['wrap_tag'] . '>';
740
- }
741
-
742
- // Display the notice markup.
743
- ?>
744
- <div id="<?php echo esc_attr( $this->manager_id . '-' . $notice['id'] ); ?>" class="<?php echo implode( ' ', $container_classes ); ?>">
745
- <form class="pixcloud_anm-form"
746
- action="<?php echo admin_url( 'admin-ajax.php?action=' . $this->manager_id . '_dismiss_admin_notice' ); ?>"
747
- method="post">
748
- <?php if ( in_array( 'notice-manager-ajax', $container_classes ) ) { ?>
749
- <input type="hidden" class="pixcloud_anm-id" value="<?php echo esc_attr( $this->manager_id ); ?>"/>
750
- <input type="hidden" class="pixcloud_anm-notice-id" name="noticeID"
751
- value="<?php echo esc_attr( $this->manager_id . '-' . $notice['id'] ); ?>"/>
752
- <noscript><input type="hidden" name="pixcloud_anm-no-js" value="1"/></noscript>
753
- <?php wp_nonce_field( $this->manager_id . '_dismiss_admin_notice', 'nonce-pixcloud_anm-' . $this->manager_id . '-' . $notice['id'] );
754
- }
755
- if ( $notice['no_js_dismissable'] ) {
756
- ?>
757
- <noscript>
758
- <table>
759
- <tr>
760
- <td style="width: 100%">
761
- </noscript><?php
762
- }
763
-
764
- echo $notice['message'];
765
-
766
- if ( $notice['no_js_dismissable'] ) {
767
- ?>
768
- <noscript>
769
- </td>
770
- <td>
771
- <button type="submit" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'customify' ); ?></span>
772
- </button>
773
- </td>
774
- </tr></table>
775
- </noscript>
776
- <?php } ?>
777
- </form>
778
- </div>
779
- <?php
780
- }
781
-
782
- /**
783
- * Display custom notice.
784
- *
785
- * @access protected
786
- * @since 1.9.0
787
- *
788
- * @param array $notice array of notice parameters.
789
- */
790
- protected function display_custom_notice( $notice ) {
791
-
792
- // Add classes to the notice container as needed.
793
- $container_classes = array(
794
- 'notice', // this class is needed by WordPress to properly identify notices and move/enhance them with JS.
795
- );
796
-
797
- // Merge with the custom classes received.
798
- if ( ! empty( $notice['container_classes' ] ) || is_array( $notice['container_classes'] ) ) {
799
- $container_classes = array_merge( $container_classes, $notice['container_classes'] );
800
- }
801
-
802
- if ( $notice['dismissable'] ) {
803
- $container_classes[] = 'is-dismissible';
804
- }
805
- if ( $notice['persistent'] && $notice['dismissable'] ) {
806
- $container_classes[] = 'notice-manager-ajax';
807
- }
808
-
809
- // Standardize the message since we can receive the markup directly or a complex data structure with markup, CSS, and so on.
810
- if ( is_string( $notice['message'] ) ) {
811
- $notice['message'] = array(
812
- 'markup' => $notice['message'],
813
- );
814
- }
815
-
816
- // Bail if we don't have any markup.
817
- if ( empty( $notice['message']['markup'] ) ) {
818
- return;
819
- }
820
-
821
- // Parse any content tags.
822
- $notice['message']['markup'] = self::parse_content_tags( $notice['message']['markup'] );
823
-
824
- // Output the custom CSS.
825
- if ( ! empty( $notice['message']['css'] ) ) { ?>
826
- <style type="text/css">
827
- <?php echo $notice['message']['css']; ?>
828
- </style>
829
- <?php }
830
-
831
- // Display the notice markup.
832
- ?>
833
- <div id="<?php echo esc_attr( $this->manager_id . '-' . $notice['id'] ); ?>" class="<?php echo implode( ' ', $container_classes ); ?>">
834
- <form class="pixcloud_anm-form"
835
- action="<?php echo admin_url( 'admin-ajax.php?action=' . $this->manager_id . '_dismiss_admin_notice' ); ?>"
836
- method="post">
837
- <?php if ( in_array( 'notice-manager-ajax', $container_classes ) ) { ?>
838
- <input type="hidden" class="pixcloud_anm-id" value="<?php echo esc_attr( $this->manager_id ); ?>"/>
839
- <input type="hidden" class="pixcloud_anm-notice-id" name="noticeID"
840
- value="<?php echo esc_attr( $this->manager_id . '-' . $notice['id'] ); ?>"/>
841
- <noscript><input type="hidden" name="pixcloud_anm-no-js" value="1"/></noscript>
842
- <?php wp_nonce_field( $this->manager_id . '_dismiss_admin_notice', 'nonce-pixcloud_anm-' . $this->manager_id . '-' . $notice['id'] );
843
- }
844
- if ( $notice['no_js_dismissable'] ) {
845
- ?>
846
- <noscript>
847
- <table>
848
- <tr>
849
- <td style="width: 100%">
850
- </noscript><?php
851
- }
852
-
853
- echo $notice['message']['markup'];
854
-
855
- if ( $notice['no_js_dismissable'] ) {
856
- ?>
857
- <noscript>
858
- </td>
859
- <td>
860
- <button type="submit" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'customify' ); ?></span></button>
861
- </td>
862
- </tr></table>
863
- </noscript>
864
- <?php } ?>
865
- </form>
866
- </div>
867
- <?php
868
- }
869
-
870
- /**
871
- * Replace any content tags present in the content.
872
- *
873
- * @param string $content
874
- *
875
- * @return string
876
- */
877
- protected function parse_content_tags( $content ) {
878
- $original_content = $content;
879
-
880
- // Allow others to alter the content before we do our work
881
- $content = apply_filters( 'pixcloud_notifications_before_parse_content_tags', $content );
882
-
883
- // Now we will replace all the supported tags with their value
884
- // %year%
885
- $content = str_replace( '%year%', date( 'Y' ), $content );
886
-
887
- // %site-title% or %site_title%
888
- $content = str_replace( '%site-title%', get_bloginfo( 'name' ), $content );
889
- $content = str_replace( '%site_title%', get_bloginfo( 'name' ), $content );
890
-
891
- // Handle the current user tags.
892
- if ( false !== strpos( $content, '%user_first_name%' ) ||
893
- false !== strpos( $content, '%user_last_name%' ) ||
894
- false !== strpos( $content, '%user_nickname%' ) ||
895
- false !== strpos( $content, '%user_display_name%' ) ) {
896
- $user = wp_get_current_user();
897
-
898
- if ( ! empty( $user ) && ! is_wp_error( $user ) ) {
899
- // %first_name%
900
- if ( ! empty( $user->first_name ) ) {
901
- $content = str_replace( '%user_first_name%', $user->first_name, $content );
902
- } else {
903
- // Fallback to display_name.
904
- $content = str_replace( '%user_first_name%', $user->display_name, $content );
905
- }
906
- // %last_name%
907
- $content = str_replace( '%user_last_name%', $user->last_name, $content );
908
- // %display_name%
909
- $content = str_replace( '%user_nickname%', $user->display_name, $content );
910
- // %nickname%
911
- $content = str_replace( '%user_display_name%', $user->nickname, $content );
912
- }
913
- }
914
-
915
- // %active_theme%
916
- $content = str_replace( '%active_theme%', Pixcloud_Notification_Conditions::get_active_theme_name(), $content );
917
-
918
- // %customify_version%
919
- $content = str_replace( '%customify_version%', Pixcloud_Notification_Conditions::get_customify_version(), $content );
920
-
921
- // %style_manager_version%
922
- $content = str_replace( '%style_manager_version%', Pixcloud_Notification_Conditions::get_style_manager_version(), $content );
923
-
924
- // %current_color_palette%
925
- $content = str_replace( '%current_color_palette%', Pixcloud_Notification_Conditions::get_current_color_palette_label(), $content );
926
-
927
- /*
928
- * URLs.
929
- */
930
- // %home_url%
931
- $content = str_replace( '%home_url%', home_url(), $content );
932
-
933
- // %customizer_url%
934
- $content = str_replace( '%customizer_url%', wp_customize_url(), $content );
935
- // %customizer_style_manager_url%
936
- $section_link = add_query_arg( array( 'autofocus[panel]' => 'style_manager_panel' ), admin_url( 'customize.php' ) );
937
- $content = str_replace( '%customizer_style_manager_url%', $section_link, $content );
938
- // %customizer_style_manager_colors_url%
939
- $section_link = add_query_arg( array( 'autofocus[section]' => 'sm_color_palettes_section' ), admin_url( 'customize.php' ) );
940
- $content = str_replace( '%customizer_style_manager_colors_url%', $section_link, $content );
941
- // %customizer_style_manager_fonts_url%
942
- $section_link = add_query_arg( array( 'autofocus[section]' => 'sm_font_palettes_section' ), admin_url( 'customize.php' ) );
943
- $content = str_replace( '%customizer_style_manager_fonts_url%', $section_link, $content );
944
- // %customizer_theme_options_url%
945
- $section_link = add_query_arg( array( 'autofocus[panel]' => 'theme_options_panel' ), admin_url( 'customize.php' ) );
946
- $content = str_replace( '%customizer_theme_options_url%', $section_link, $content );
947
- // %customizer_menus_url%
948
- $section_link = add_query_arg( array( 'autofocus[panel]' => 'nav_menus' ), admin_url( 'customize.php' ) );
949
- $content = str_replace( '%customizer_menus_url%', $section_link, $content );
950
- // %customizer_widgets_url%
951
- $section_link = add_query_arg( array( 'autofocus[panel]' => 'widgets' ), admin_url( 'customize.php' ) );
952
- $content = str_replace( '%customizer_widgets_url%', $section_link, $content );
953
- // %customizer_homepage_settings_url%
954
- $section_link = add_query_arg( array( 'autofocus[section]' => 'static_front_page' ), admin_url( 'customize.php' ) );
955
- $content = str_replace( '%customizer_homepage_settings_url%', $section_link, $content );
956
- // %customizer_site_identity_url%
957
- $section_link = add_query_arg( array( 'autofocus[section]' => 'publish_settings' ), admin_url( 'customize.php' ) );
958
- $content = str_replace( '%customizer_site_identity_url%', $section_link, $content );
959
-
960
- // %pixelgrade_care_dashboard_url%
961
- $content = str_replace( '%pixelgrade_care_dashboard_url%', admin_url( 'admin.php?page=pixelgrade_care' ), $content );
962
- // %pixelgrade_care_themes_url%
963
- $content = str_replace( '%pixelgrade_care_themes_url%', admin_url( 'admin.php?page=pixelgrade_themes' ), $content );
964
-
965
- // Allow others to alter the content after we did our work
966
- return apply_filters( 'pixcloud_notifications_after_parse_content_tags', $content, $original_content );
967
- }
968
-
969
- /**
970
- * Process ajax call to dismiss notice.
971
- *
972
- * @since 1.9.0
973
- */
974
- public function dismiss_notice() {
975
-
976
- if ( isset( $_POST['noticeID'] ) ) {
977
-
978
- $notice_id = sanitize_text_field( $_POST['noticeID'] );
979
-
980
- // Check nonce.
981
- check_ajax_referer( $this->manager_id . '_dismiss_admin_notice', 'nonce-pixcloud_anm-' . $notice_id );
982
-
983
- // Sanitize message ID after stripping off the '[manager_id]-'.
984
- $notice_id = str_replace( $this->manager_id . '-', '', sanitize_text_field( $_POST['noticeID'] ) );
985
-
986
- // Get notice info.
987
- if ( $user = wp_get_current_user() ) {
988
-
989
- // Get event if there was one.
990
- $event = isset( $_POST['pixcloud_anm-event'] ) ? sanitize_text_field( $_POST['pixcloud_anm-event'] ) : false;
991
-
992
- if ( ! empty( $this->notifications[ $notice_id ] ) && ! empty( $this->notifications[ $notice_id ]['dismissable'] ) ) {
993
-
994
- if ( ! empty( $this->notifications[ $notice_id ]['dismiss_for_all_users'] ) ) {
995
- // Dismiss for all users
996
- $this->dismiss_notice_for_all_users( $notice_id, $this->notifications[ $notice_id ], $event );
997
- } else {
998
- // Dismiss notice just for the current user.
999
- $this->dismiss_notice_for_user( $notice_id, $user->ID, $event );
1000
- }
1001
-
1002
- // Redirect if this is not an ajax request.
1003
- if ( isset( $_POST['pixcloud_anm-no-js'] ) ) {
1004
-
1005
- // If a redirect has been set, use it.
1006
- if ( isset( $_POST['pixcloud_anm-redirect'] ) ) {
1007
- if ( ! empty( $_POST['pixcloud_anm-redirect'] ) ) {
1008
- wp_redirect( $_POST['pixcloud_anm-redirect'] );
1009
- exit();
1010
- }
1011
- }
1012
-
1013
- // If not redirected, go back to where we came from.
1014
- wp_safe_redirect( wp_get_referer() );
1015
- exit();
1016
- }
1017
- }
1018
- }
1019
- }
1020
-
1021
- wp_die();
1022
-
1023
- }
1024
-
1025
- /**
1026
- * Add dismissal to all users for a notice.
1027
- *
1028
- * @access protected
1029
- * @since 1.9.0
1030
- *
1031
- * @param string $notice_id Unique ID of message.
1032
- * @param array $notice The notice details.
1033
- * @param string|false $event
1034
- *
1035
- * @return bool $dismissed True if notice was dismissed successfully.
1036
- */
1037
- protected function dismiss_notice_for_all_users( $notice_id, $notice, $event = false ) {
1038
-
1039
- $dismissed = true;
1040
-
1041
- // If user ids have been specified, check whether notice should be displayed to this user
1042
- if ( ! empty( $notice['user_ids'] ) ) {
1043
- // Convert roles to user ids
1044
- $user_ids = $this->parse_user_roles( $notice['user_ids'] );
1045
- } else {
1046
- $user_ids = get_users( array( 'fields' => 'id' ) );
1047
- }
1048
-
1049
- if ( ! empty( $user_ids ) && is_array( $user_ids ) ) {
1050
- foreach ( $user_ids as $user_id ) {
1051
- // We are only interested in failures. One failure is enough to return false overall.
1052
- $dismissed = $this->dismiss_notice_for_user( $notice_id, $user_id, $event ) ? $dismissed : false;
1053
- }
1054
- }
1055
-
1056
- return $dismissed;
1057
- }
1058
-
1059
- /**
1060
- * Add dismissal to a user for a notice.
1061
- *
1062
- * @access protected
1063
- * @since 1.9.0
1064
- *
1065
- * @param string $notice_id Unique ID of message.
1066
- * @param int $user_id User id for whom message should be dismissed.
1067
- * @param string|false $event
1068
- *
1069
- * @return bool $dismissed True if notice was dismissed successfully.
1070
- */
1071
- protected function dismiss_notice_for_user( $notice_id, $user_id, $event = false ) {
1072
-
1073
- $dismissed = false;
1074
- if ( ! $notices = get_user_meta( $user_id, $this->manager_id . '_notifications', true ) ) {
1075
- $notices = array();
1076
- }
1077
-
1078
- if ( ! array_key_exists( $notice_id, $notices ) ) {
1079
- $notices[ $notice_id ] = array(
1080
- 'dismissed' => true,
1081
- );
1082
- $dismissed = update_user_meta( $user_id, $this->manager_id . '_notifications', $notices );
1083
- } elseif ( empty( $notices[ $notice_id ]['dismissed'] ) ) {
1084
- $notices[ $notice_id ]['dismissed'] = true;
1085
- $dismissed = update_user_meta( $user_id, $this->manager_id . '_notifications', $notices );
1086
- }
1087
-
1088
- // Allow for other actions on dismissal of notice.
1089
- if ( $dismissed ) {
1090
- do_action( $this->manager_id . '_user_notice_dismissed_' . $notice_id, $user_id );
1091
- if ( $event ) {
1092
- do_action( $this->manager_id . '_user_notice_dismissed_' . $notice_id . '_' . $event, $user_id );
1093
- }
1094
- }
1095
-
1096
- return $dismissed;
1097
-
1098
- }
1099
-
1100
- /**
1101
- * Register display of a notice for a user.
1102
- *
1103
- * @access protected
1104
- * @since 1.9.0
1105
- *
1106
- * @param string $notice_id Unique ID of notice.
1107
- * @param int $user_id User id for whom the notice should be registered as displayed.
1108
- *
1109
- * @return bool $displayed True if notice was registered as displayed successfully.
1110
- */
1111
- protected function register_user_notice_display( $notice_id, $user_id ) {
1112
-
1113
- $registered = false;
1114
- if ( ! $notices = get_user_meta( $user_id, $this->manager_id . '_notifications', true ) ) {
1115
- $notices = array();
1116
- }
1117
-
1118
- if ( ! array_key_exists( $notice_id, $notices ) ) {
1119
- $notices[ $notice_id ] = array(
1120
- 'displayed' => true,
1121
- );
1122
- $registered = update_user_meta( $user_id, $this->manager_id . '_notifications', $notices );
1123
- } elseif ( empty( $notices[ $notice_id ]['displayed'] ) ) {
1124
- $notices[ $notice_id ]['displayed'] = true;
1125
- $registered = update_user_meta( $user_id, $this->manager_id . '_notifications', $notices );
1126
- }
1127
-
1128
- // Allow for other actions on register display of notice.
1129
- if ( $registered ) {
1130
- do_action( $this->manager_id . '_user_notice_displayed_' . $notice_id, $user_id );
1131
- }
1132
-
1133
- return $registered;
1134
-
1135
- }
1136
-
1137
- /**
1138
- * Get all user ids with notifications data.
1139
- *
1140
- * @since 1.9.0
1141
- *
1142
- * @access protected
1143
- * @return array Array of user ids.
1144
- */
1145
- protected function get_users_with_notifications_data() {
1146
-
1147
- $args = array(
1148
- 'meta_query' => array(
1149
- array(
1150
- 'key' => $this->manager_id . '_notifications',
1151
- 'compare' => '!=',
1152
- 'value' => '',
1153
- ),
1154
- ),
1155
- 'fields' => 'ID',
1156
- );
1157
-
1158
- return get_users( $args );
1159
-
1160
- }
1161
-
1162
- /**
1163
- * Remove notifications data from a user.
1164
- *
1165
- * @since 1.9.0
1166
- *
1167
- * @param int $user_id User ID from whom to remove dismissals. Set to 0 for all users.
1168
- * @param array $notice_ids Array of notice ids to remove
1169
- */
1170
- public function remove_user_notifications_data( $user_id = 0, $notice_ids = array() ) {
1171
-
1172
- if ( ! empty( $notice_ids ) ) {
1173
-
1174
- if ( $user_notifications_details = get_user_meta( $user_id, $this->manager_id . '_notifications', true ) ) {
1175
-
1176
- $update = false;
1177
- foreach ( $notice_ids as $notice_id ) {
1178
- if ( ! empty( $user_notifications_details[ $notice_id ] ) ) {
1179
- unset( $user_notifications_details[ $notice_id ] );
1180
- $update = true;
1181
- }
1182
- }
1183
-
1184
- if ( $update ) {
1185
- if ( empty( $user_notifications_details ) ) {
1186
- delete_user_meta( $user_id, $this->manager_id . '_notifications' );
1187
- } else {
1188
- update_user_meta( $user_id, $this->manager_id . '_notifications', $user_notifications_details );
1189
- }
1190
- return;
1191
- }
1192
- }
1193
- }
1194
-
1195
- delete_metadata( 'user', $user_id, $this->manager_id . '_notifications', false, true );
1196
- }
1197
-
1198
- /**
1199
- * Remove all notifications data from a user.
1200
- *
1201
- * @since 1.9.0
1202
- *
1203
- * @param int $user_id User ID from whom to remove dismissals. Set to 0 for all users.
1204
- */
1205
- public function remove_user_data( $user_id = 0 ) {
1206
- delete_metadata( 'user', $user_id, $this->manager_id . '_notifications', false, true );
1207
- }
1208
-
1209
- /**
1210
- * Remove all data from the database. (Can be called on plugin uninstall, for example.)
1211
- *
1212
- * @since 1.9.0
1213
- */
1214
- public function remove_all_data() {
1215
- $this->remove_user_data();
1216
- }
1217
-
1218
- public function add_data_to_request( $data ) {
1219
- // Do nothing if data is already there.
1220
- if ( isset( $data['notifications_data'] ) ) {
1221
- return $data;
1222
- }
1223
-
1224
- $notifications_data = array();
1225
-
1226
- $user_ids = $this->get_users_with_notifications_data();
1227
- if ( ! empty( $user_ids ) ) {
1228
- foreach ( $user_ids as $user_id ) {
1229
- $user_notifications_data = get_user_meta( $user_id, $this->manager_id . '_notifications', true );
1230
- if ( ! empty( $user_notifications_data ) ) {
1231
- foreach ( $user_notifications_data as $id => $user_notification_data ) {
1232
- // We will send data user agnostic.
1233
- // We will rely on the fact that displayed and dismissed is boolean (so they can be translated to 0 and 1),
1234
- // and simply do the sum of them.
1235
- if ( ! isset( $notifications_data[ $id ] ) ) {
1236
- $notifications_data[ $id ] = array(
1237
- 'seen_by_users' => 0,
1238
- 'dismissed_by_users' => 0,
1239
- );
1240
- }
1241
-
1242
- if ( ! empty( $user_notification_data['displayed'] ) ) {
1243
- $notifications_data[ $id ]['seen_by_users'] ++;
1244
- }
1245
-
1246
- if ( ! empty( $user_notification_data['dismissed'] ) ) {
1247
- $notifications_data[ $id ]['dismissed_by_users'] ++;
1248
- }
1249
- }
1250
- }
1251
- }
1252
- }
1253
-
1254
- if ( ! empty( $notifications_data ) ) {
1255
- $data['notifications_data'] = $notifications_data;
1256
- }
1257
-
1258
- return $data;
1259
- }
1260
-
1261
- /**
1262
- * Main Pixcloud_Admin_Notifications_Manager Instance
1263
- *
1264
- * Ensures only one instance of Pixcloud_Admin_Notifications_Manager is loaded or can be loaded.
1265
- *
1266
- * @since 1.9.0
1267
- * @static
1268
- *
1269
- * @param array $args The arguments to initialize the notifications manager.
1270
- * @return Pixcloud_Admin_Notifications_Manager Main Pixcloud_Admin_Notifications_Manager instance
1271
- */
1272
- public static function instance( $args = array() ) {
1273
-
1274
- if ( is_null( self::$_instance ) ) {
1275
- self::$_instance = new self( $args );
1276
- }
1277
- return self::$_instance;
1278
- } // End instance ()
1279
-
1280
- /**
1281
- * Cloning is forbidden.
1282
- *
1283
- * @since 1.9.0
1284
- */
1285
- public function __clone() {
1286
-
1287
- _doing_it_wrong( __FUNCTION__,esc_html( __( 'Cheatin&#8217; huh?' ) ), null );
1288
- } // End __clone ()
1289
-
1290
- /**
1291
- * Unserializing instances of this class is forbidden.
1292
- *
1293
- * @since 1.9.0
1294
- */
1295
- public function __wakeup() {
1296
-
1297
- _doing_it_wrong( __FUNCTION__, esc_html( __( 'Cheatin&#8217; huh?' ) ), null );
1298
- } // End __wakeup ()
1299
-
1300
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin-notifications-manager/class-notification-conditions.php DELETED
@@ -1,732 +0,0 @@
1
- <?php
2
-
3
- /**
4
- *
5
- * A class to handle the conditions of notifications.
6
- *
7
- * These conditions are in the format provided by jQuery QueryBuilder.
8
- */
9
- class Pixcloud_Notification_Conditions {
10
-
11
- protected static $group_relations = array(
12
- 'AND', 'OR',
13
- );
14
-
15
- protected static $active_theme_details = null;
16
-
17
- /**
18
- * Process a notification's conditions.
19
- *
20
- * @param array $conditions
21
- *
22
- * @return bool|mixed
23
- */
24
- public static function process( $conditions ) {
25
- // First check if the conditions are valid.
26
- // On invalid conditions we return true.
27
- if ( empty( $conditions['valid'] ) ) {
28
- return apply_filters( 'pixcloud_notification_conditions_result', true, $conditions );
29
- }
30
-
31
- // Process the group. Any top level conditions are expected to be a group, not an individual rule.
32
- $result = self::process_group( $conditions );
33
-
34
- return apply_filters( 'pixcloud_notification_conditions_result', $result, $conditions );
35
- }
36
-
37
- /**
38
- * Process and evaluate a notification condition group.
39
- *
40
- * @param array $group_conditions
41
- *
42
- * @return bool
43
- */
44
- public static function process_group( $group_conditions ) {
45
- // By default we will use the AND relation among group rules or subgroups.
46
- $group_relation = 'AND';
47
- if ( ! empty( $group_conditions['condition'] ) && in_array( $group_conditions['condition'], self::$group_relations ) ) {
48
- $group_relation = $group_conditions['condition'];
49
- }
50
-
51
- if ( empty( $group_conditions['rules'] ) || ! is_array( $group_conditions['rules'] ) ) {
52
- return true;
53
- }
54
-
55
- switch ( $group_relation ) {
56
- case 'AND':
57
- // By default we assure that the conditions evaluate to true.
58
- $result = true;
59
- break;
60
- case 'OR':
61
- // By default we assure that the conditions evaluate to false.
62
- $result = false;
63
- break;
64
- default:
65
- $result = false;
66
- break;
67
- }
68
-
69
- $stop = false;
70
- foreach ( $group_conditions['rules'] as $rule ) {
71
- // Determine if it is a simple rule or a subgroup.
72
- if ( ! empty( $rule['rules'] ) ) {
73
- $result = self::process_group( $rule );
74
- } else {
75
- $result = self::process_rule( $rule );
76
- }
77
-
78
- // Now evaluate the rule result according to the group relation.
79
- switch ( $group_relation ) {
80
- case 'AND':
81
- if ( false === $result ) {
82
- // Stop the evaluation.
83
- $stop = true;
84
- }
85
- break;
86
- case 'OR':
87
- if ( true === $result ) {
88
- // Stop the evaluation.
89
- $stop = true;
90
- }
91
- break;
92
- default:
93
- // We should not reach here but just in case.
94
- $stop = true;
95
- break;
96
- }
97
-
98
- // Stop the rules processing if this is the case.
99
- if ( true === $stop ) {
100
- break;
101
- }
102
- }
103
-
104
- return apply_filters( 'pixcloud_notification_conditions_group_result', $result, $group_conditions['rules'], $group_relation, $group_conditions );
105
- }
106
-
107
- /**
108
- * Process and evaluate a notification condition rule.
109
- *
110
- * @param array $rule
111
- *
112
- * @return bool
113
- */
114
- public static function process_rule( $rule ) {
115
- $result = true;
116
-
117
- // First validate the rule, just in case. On anything invalid we will return true.
118
- if ( empty( $rule['id'] ) ) {
119
- return $result;
120
- }
121
- if ( empty( $rule['operator'] ) ) {
122
- return $result;
123
- }
124
-
125
- if ( ! isset( $rule['value'] ) ) {
126
- $rule['value'] = null;
127
- }
128
-
129
- // Now determine the field value (the dynamic part of the rule).
130
- if ( ! method_exists( __CLASS__, 'get_' . $rule['id'] ) ) {
131
- return $result;
132
- }
133
- $field_value = call_user_func( array( __CLASS__, 'get_' . $rule['id'] ), $rule );
134
- // Make sure that we work with the provided field type, regardless if it is a single value or a list.
135
- $field_value = self::convert_value_to_type( $field_value, $rule['type'] );
136
- $rule['value'] = self::convert_value_to_type( $rule['value'], $rule['type'] );
137
-
138
- // Before we evaluate the expression, we need to account for the special expressions (e.g. function_exists, class_exists).
139
- switch ( $rule['id'] ) {
140
- case 'function_exists':
141
- // We apply function_exists to each value.
142
- if ( is_array( $rule['value'] ) ) {
143
- $rule['value'] = array_map( 'function_exists', $rule['value'] );
144
- } else {
145
- $rule['value'] = function_exists( $rule['value'] );
146
- }
147
-
148
- // Make sure that the field value is true.
149
- $field_value = true;
150
- break;
151
- case 'class_exists':
152
- // We apply function_exists to each value.
153
- if ( is_array( $rule['value'] ) ) {
154
- $rule['value'] = array_map( 'class_exists', $rule['value'] );
155
- } else {
156
- $rule['value'] = class_exists( $rule['value'] );
157
- }
158
-
159
- // Make sure that the field value is true.
160
- $field_value = true;
161
- break;
162
- default:
163
- break;
164
- }
165
-
166
- // Now evaluate the expression.
167
- require_once 'class-notification-logicalexpression.php';
168
- $result = Pixcloud_Notification_LogicalExpression::evaluate( $field_value, $rule['operator'], $rule['value'] );
169
-
170
- return apply_filters( 'pixcloud_notification_conditions_rule_result', $result, $field_value, $rule['operator'], $rule['value'], $rule );
171
- }
172
-
173
- public static function evaluate_expression( $left, $operator, $right, $rule ) {
174
-
175
- }
176
-
177
- /* ========================
178
- * THE FIELD VALUES GETTERS
179
- */
180
-
181
- public static function get_style_manager_is_supported( $rule = null ) {
182
- if ( class_exists( 'Customify_Style_Manager' ) && Customify_Style_Manager::instance()->is_supported() ) {
183
- return true;
184
- }
185
-
186
- return false;
187
- }
188
-
189
- public static function get_style_manager_user_provided_feedback( $rule = null ) {
190
- if ( class_exists( 'Customify_Style_Manager' ) && Customify_Style_Manager::instance()->user_provided_feedback() ) {
191
- return true;
192
- }
193
-
194
- return false;
195
- }
196
-
197
- public static function get_style_manager_user_provided_feedback_days_ago( $rule = null ) {
198
- $user_provided_feedback = get_option( 'style_manager_user_feedback_provided' );
199
- if ( empty( $user_provided_feedback ) ) {
200
- return false;
201
- }
202
-
203
- return round( ( time() - $user_provided_feedback ) / DAY_IN_SECONDS );
204
- }
205
-
206
- public static function get_current_color_palette_hashid( $rule = null ) {
207
- if ( class_exists('Customify_Color_Palettes') ) {
208
- return Customify_Color_Palettes::instance()->get_current_palette();
209
- }
210
-
211
- return '';
212
- }
213
-
214
- public static function get_current_color_palette_label( $rule = null ) {
215
- if ( class_exists('Customify_Color_Palettes') ) {
216
- $color_palette_hashid = self::get_current_color_palette_hashid( $rule );
217
- $color_palettes = Customify_Color_Palettes::instance()->get_palettes();
218
- if ( ! empty( $color_palettes[ $color_palette_hashid ] ) ) {
219
- return $color_palettes[ $color_palette_hashid ]['label'];
220
- }
221
- }
222
-
223
- return '';
224
- }
225
-
226
- public static function get_current_color_palette_is_custom( $rule = null ) {
227
- if ( class_exists('Customify_Color_Palettes') ) {
228
- return Customify_Color_Palettes::instance()->is_using_custom_palette();
229
- }
230
-
231
- return false;
232
- }
233
-
234
- public static function get_current_color_palette_is_variation_in_use( $rule = null ) {
235
- if ( class_exists('Customify_Color_Palettes') ) {
236
- return Customify_Color_Palettes::instance()->get_current_palette_variation();
237
- }
238
-
239
- return false;
240
- }
241
-
242
- public static function get_active_theme_slug( $rule = null ) {
243
- $theme_details = self::get_active_theme_details();
244
-
245
- if ( ! empty( $theme_details['slug'] ) ) {
246
- return $theme_details['slug'];
247
- }
248
-
249
- return '';
250
- }
251
-
252
- public static function get_active_theme_hashid( $rule = null ) {
253
- $theme_details = self::get_active_theme_details();
254
-
255
- if ( ! empty( $theme_details['hashid'] ) ) {
256
- return $theme_details['hashid'];
257
- }
258
-
259
- return '';
260
- }
261
-
262
- public static function get_active_theme_name( $rule = null ) {
263
- $theme_details = self::get_active_theme_details();
264
-
265
- if ( ! empty( $theme_details['name'] ) ) {
266
- return $theme_details['name'];
267
- }
268
-
269
- return '';
270
- }
271
-
272
- public static function get_active_theme_author( $rule = null ) {
273
- $theme_details = self::get_active_theme_details();
274
-
275
- if ( ! empty( $theme_details['author'] ) ) {
276
- return $theme_details['author'];
277
- }
278
-
279
- return '';
280
- }
281
-
282
- public static function get_active_theme_has_wupdates_valid_code( $rule = null ) {
283
- $theme_details = self::get_active_theme_details();
284
-
285
- if ( ! empty( $theme_details['wupdates_code_unchanged'] ) ) {
286
- return true;
287
- }
288
-
289
- return false;
290
- }
291
-
292
- public static function get_active_theme_has_pixelgrade_license( $rule = null ) {
293
- $theme_details = self::get_active_theme_details();
294
-
295
- if ( ! empty( $theme_details['license_hash'] ) ) {
296
- return true;
297
- }
298
-
299
- return false;
300
- }
301
-
302
- public static function get_active_theme_pixelgrade_license_status( $rule = null ) {
303
- $theme_details = self::get_active_theme_details();
304
-
305
- if ( ! empty( $theme_details['license_status'] ) ) {
306
- return $theme_details['license_status'];
307
- }
308
-
309
- return '';
310
- }
311
-
312
- public static function get_active_theme_version( $rule = null ) {
313
- $theme_details = self::get_active_theme_details();
314
-
315
- if ( ! empty( $theme_details['version'] ) ) {
316
- return $theme_details['version'];
317
- }
318
-
319
- return '0.0.1';
320
- }
321
-
322
- public static function get_customify_version( $rule = null ) {
323
- if ( function_exists( 'PixCustomifyPlugin' ) ) {
324
- return PixCustomifyPlugin()->get_version();
325
- }
326
-
327
- return false;
328
- }
329
-
330
- public static function get_style_manager_version( $rule = null ) {
331
- if ( function_exists( 'StyleManager_Plugin' ) ) {
332
- return StyleManager_Plugin()->get_version();
333
- }
334
-
335
- return false;
336
- }
337
-
338
- public static function get_wp_version( $rule = null ) {
339
- return get_bloginfo( 'version' );
340
- }
341
-
342
- public static function get_php_version( $rule = null ) {
343
- if ( function_exists( 'phpversion' ) ) {
344
- return phpversion();
345
- }
346
-
347
- return false;
348
- }
349
-
350
- public static function get_current_user_role( $rule = null ) {
351
- $current_user = wp_get_current_user();
352
-
353
- if ( ! empty( $current_user ) && ! is_wp_error( $current_user ) ) {
354
- return $current_user->roles;
355
- }
356
-
357
- return false;
358
- }
359
-
360
- public static function get_current_user_capabilities( $rule = null ) {
361
- $current_user = wp_get_current_user();
362
-
363
- if ( ! empty( $current_user ) && ! is_wp_error( $current_user ) ) {
364
- return $current_user->allcaps;
365
- }
366
-
367
- return false;
368
- }
369
-
370
- public static function get_site_is_public( $rule = null ) {
371
- // Local/development url parts to match for
372
- $devsite_needles = array(
373
- 'localhost',
374
- ':8888',
375
- '.local',
376
- '.dev',
377
- ':8082',
378
- 'staging.',
379
- '.invalid',
380
- '.test',
381
- '.example',
382
- );
383
-
384
- if ( self::string_contains_any( get_bloginfo( 'url'), $devsite_needles ) ) {
385
- return false;
386
- }
387
-
388
- return true;
389
- }
390
-
391
- public static function get_site_url( $rule = null ) {
392
- return get_bloginfo( 'url');
393
- }
394
-
395
- public static function get_site_is_multisite( $rule = null ) {
396
- return is_multisite();
397
- }
398
-
399
- public static function get_site_number_of_posts( $rule = null ) {
400
- // Make sure it is an array.
401
- $post_count = json_decode( json_encode( wp_count_posts( 'post' ) ), true );
402
- return ! empty( $post_count['publish'] ) ? $post_count['publish'] : 0;
403
- }
404
-
405
- public static function get_site_number_of_pages( $rule = null ) {
406
- // Make sure it is an array.
407
- $post_count = json_decode( json_encode( wp_count_posts( 'page' ) ), true );
408
- return ! empty( $post_count['publish'] ) ? $post_count['publish'] : 0;
409
- }
410
-
411
- public static function get_current_date( $rule = null ) {
412
- return date('Y/m/d');
413
- }
414
-
415
- // This is special.
416
- public static function get_class_exists( $rule = null ) {
417
- return true;
418
- }
419
-
420
- // This is special.
421
- public static function get_function_exists( $rule = null ) {
422
- return true;
423
- }
424
-
425
- public static function get_wp_debug_active( $rule = null ) {
426
- return defined( 'WP_DEBUG') && true === WP_DEBUG;
427
- }
428
-
429
- public static function get_pixelgrade_dev_mode_active( $rule = null ) {
430
- return defined( 'PIXELGRADE_CARE__DEV_MODE') && true === PIXELGRADE_CARE__DEV_MODE;
431
- }
432
-
433
- public static function get_customify_dev_force_defaults_active( $rule = null ) {
434
- return defined( 'CUSTOMIFY_DEV_FORCE_DEFAULTS') && true === CUSTOMIFY_DEV_FORCE_DEFAULTS;
435
- }
436
-
437
- public static function get_sm_dev_customizer_force_defaults_active( $rule = null ) {
438
- return defined( 'SM_DEV_CUSTOMIZER_FORCE_DEFAULTS') && true === SM_DEV_CUSTOMIZER_FORCE_DEFAULTS;
439
- }
440
-
441
- /* =======
442
- * HELPERS
443
- */
444
-
445
- /**
446
- * @param $value
447
- * @param $type
448
- *
449
- * @return false|float|int|string
450
- */
451
- public static function convert_value_to_type( $value, $type ) {
452
- if ( null === $value ) {
453
- return $value;
454
- }
455
-
456
- // Make sure we are not dealing with stdClass.
457
- if ( $value instanceof stdClass ) {
458
- $value = json_decode( json_encode( $value ), true );
459
- }
460
-
461
- if ( ! empty( $type ) ) {
462
- switch ( $type ) {
463
- case 'integer':
464
- if ( is_array( $value ) ) {
465
- $value = array_map( 'intval', $value );
466
- } else {
467
- $value = intval( $value );
468
- }
469
- break;
470
- case 'string':
471
- if ( is_array( $value ) ) {
472
- $value = array_map( 'strval', $value );
473
- } else {
474
- $value = strval( $value );
475
- }
476
- break;
477
- case 'double':
478
- if ( is_array( $value ) ) {
479
- $value = array_map( 'doubleval', $value );
480
- } else {
481
- $value = doubleval( $value );
482
- }
483
- break;
484
- case 'date':
485
- if ( is_array( $value ) ) {
486
- $value = array_map( 'strtotime', $value );
487
- $value = array_map( array( __CLASS__, 'dateval' ), $value );
488
- } else {
489
- $value = self::dateval( strtotime( $value ) );
490
- }
491
- break;
492
- case 'time':
493
- if ( is_array( $value ) ) {
494
- $value = array_map( 'strtotime', $value );
495
- $value = array_map( array( __CLASS__, 'timeval' ), $value );
496
- } else {
497
- $value = self::timeval( strtotime( $value ) );
498
- }
499
- break;
500
- case 'datetime':
501
- if ( is_array( $value ) ) {
502
- $value = array_map( 'strtotime', $value );
503
- $value = array_map( array( __CLASS__, 'datetimeval' ), $value );
504
- } else {
505
- $value = self::datetimeval( strtotime( $value ) );
506
- }
507
- break;
508
- case 'boolean':
509
- if ( is_array( $value ) ) {
510
- $value = array_map( 'boolval', $value );
511
- } else {
512
- $value = boolval( $value );
513
- }
514
- break;
515
- default:
516
- break;
517
- }
518
- }
519
-
520
- return $value;
521
- }
522
-
523
- protected static function dateval( $timestamp ) {
524
- return date('Y/m/d', $timestamp );
525
- }
526
-
527
- protected static function timeval( $timestamp ) {
528
- return date('H:i:s', $timestamp );
529
- }
530
-
531
- protected static function datetimeval( $timestamp ) {
532
- return date('Y/m/d H:i:s', $timestamp );
533
- }
534
-
535
- /**
536
- * Grab all the details about the current active theme.
537
- *
538
- * @return array
539
- */
540
- public static function get_active_theme_details() {
541
- if ( self::$active_theme_details !== null ) {
542
- return self::$active_theme_details;
543
- }
544
-
545
- $theme_details = array();
546
-
547
- // Gather Pixelgrade and WUpdates theme details.
548
- $theme_details['is_pixelgrade_theme'] = self::is_pixelgrade_theme();
549
- $theme_details['hashid'] = self::get_wupdates_theme_hashid();
550
- $theme_details['wupdates_code_unchanged'] = self::is_wupdates_code_unchanged();
551
- $theme_details['license_hash'] = get_theme_mod( 'pixcare_license_hash', false );
552
- $theme_details['license_status'] = get_theme_mod( 'pixcare_license_status', false );
553
-
554
- // Gather the rest of the theme details.
555
- /** @var WP_Theme $theme */
556
- $theme = wp_get_theme();
557
- $parent = $theme->parent();
558
- if ( is_child_theme() && ! empty( $parent ) ) {
559
- $theme = $parent;
560
- }
561
-
562
- // The theme name should be the one from the wupdates array.
563
- $wupdates_theme_name = self::get_original_theme_name();
564
- if ( ! empty( $wupdates_theme_name ) ) {
565
- $theme_details['name'] = $wupdates_theme_name;
566
- }
567
- // If for some reason we couldn't get the theme name from the WUpdates code, use the standard theme name.
568
- if ( empty( $theme_details['name'] ) ) {
569
- $theme_details['name'] = $theme->get( 'Name' );
570
- }
571
-
572
- // The theme slug should be the one from the wupdates array
573
- $wupdates_theme_slug = self::get_original_theme_slug();
574
- if ( ! empty( $wupdates_theme_slug ) ) {
575
- $theme_details['slug'] = $wupdates_theme_slug;
576
- }
577
- // If for some reason we couldn't get the theme slug from the WUpdates code, use the standard theme slug.
578
- if ( empty( $theme_details['slug'] ) ) {
579
- $theme_details['slug'] = basename( get_template_directory() );
580
- }
581
-
582
- $theme_details['uri'] = $theme->get( 'ThemeURI' );
583
- $theme_details['desc'] = $theme->get( 'Description' );
584
- $theme_details['author'] = $theme->get( 'Author' );
585
- $theme_details['version'] = $theme->get( 'Version' );
586
-
587
- $theme_details['is_child'] = is_child_theme();
588
- $theme_details['template'] = $theme->get_template();
589
-
590
- self::$active_theme_details = $theme_details;
591
-
592
- return $theme_details;
593
- }
594
-
595
- /**
596
- * Determine if the current theme is one of ours.
597
- *
598
- * @return bool
599
- */
600
- public static function is_pixelgrade_theme() {
601
- // Get the id of the current theme
602
- $wupdates_ids = apply_filters( 'wupdates_gather_ids', array() );
603
- $slug = basename( get_template_directory() );
604
- // If we have the WUpdates information tied to the current theme slug, then we are good
605
- if ( isset( $wupdates_ids[ $slug ] ) ) {
606
- return true;
607
- }
608
-
609
- // Next we will test for the author in the theme header
610
- $theme = wp_get_theme();
611
- $theme_author = $theme->get( 'Author' );
612
- if ( ! empty( $theme_author ) && strtolower( $theme_author ) == 'pixelgrade' ) {
613
- return true;
614
- }
615
-
616
- return false;
617
- }
618
-
619
- /**
620
- * Checks if the wupdates_gather_ids code has been tempered with.
621
- *
622
- * @return bool
623
- */
624
- public static function is_wupdates_code_unchanged() {
625
- // Get the id of the current theme
626
- $wupdates_ids = apply_filters( 'wupdates_gather_ids', array() );
627
- $slug = basename( get_template_directory() );
628
- // If the user hasn't got any pixelgrade themes - return true. They don't need this filter
629
- if ( ! self::has_pixelgrade_theme() ) {
630
- return true;
631
- }
632
-
633
- // Check if the wupdates_ids array is missing either of this properties
634
- if ( ! isset( $wupdates_ids[ $slug ] ) || ! isset( $wupdates_ids[ $slug ]['name'] ) || ! isset( $wupdates_ids[ $slug ]['slug'] ) || ! isset( $wupdates_ids[ $slug ]['id'] ) || ! isset( $wupdates_ids[ $slug ]['type'] ) || ! isset( $wupdates_ids[ $slug ]['digest'] ) ) {
635
- return false;
636
- }
637
- // Create the md5 hash from the properties of wupdates_ids and compare it to the digest from that array
638
- $md5 = md5( 'name-' . $wupdates_ids[ $slug ]['name'] . ';slug-' . $wupdates_ids[ $slug ]['slug'] . ';id-' . $wupdates_ids[ $slug ]['id'] . ';type-' . $wupdates_ids[ $slug ]['type'] );
639
- // the md5 hash should be the same one as the digest hash
640
- if ( $md5 !== $wupdates_ids[ $slug ]['digest'] ) {
641
- return false;
642
- }
643
- return true;
644
- }
645
-
646
- /**
647
- * Determine if there are any Pixelgrade themes currently installed.
648
- *
649
- * @return bool
650
- */
651
- public static function has_pixelgrade_theme() {
652
- $themes = wp_get_themes();
653
- // Loop through the themes.
654
- // If we find a theme from pixelgrade return true.
655
- /** @var WP_Theme $theme */
656
- foreach ( $themes as $theme ) {
657
- $theme_author = $theme->get( 'Author' );
658
-
659
- if ( ! empty( $theme_author ) && strtolower( $theme_author ) == 'pixelgrade' ) {
660
- return true;
661
- }
662
- }
663
-
664
- // No themes from pixelgrade found, return false.
665
- return false;
666
- }
667
-
668
- /**
669
- * Get the current theme original name from the WUpdates code.
670
- *
671
- * @return string
672
- */
673
- public static function get_original_theme_name() {
674
- // Get the id of the current theme
675
- $wupdates_ids = apply_filters( 'wupdates_gather_ids', array() );
676
- $slug = basename( get_template_directory() );
677
- if ( ! isset( $wupdates_ids[ $slug ] ) || ! isset( $wupdates_ids[ $slug ]['name'] ) ) {
678
- return ucfirst( $slug );
679
- }
680
- return $wupdates_ids[ $slug ]['name'];
681
- }
682
-
683
- /**
684
- * Get the current theme original slug from the WUpdates code.
685
- *
686
- * @return string
687
- */
688
- public static function get_original_theme_slug() {
689
- // Get the id of the current theme
690
- $wupdates_ids = apply_filters( 'wupdates_gather_ids', array() );
691
- $slug = basename( get_template_directory() );
692
- if ( ! isset( $wupdates_ids[ $slug ] ) || ! isset( $wupdates_ids[ $slug ]['slug'] ) ) {
693
- return $slug;
694
- }
695
-
696
- return sanitize_title( $wupdates_ids[ $slug ]['slug'] );
697
- }
698
-
699
- /**
700
- * Get the current theme hashid from the WUpdates code.
701
- *
702
- * @return string
703
- */
704
- public static function get_wupdates_theme_hashid() {
705
- // Get the id of the current theme
706
- $wupdates_ids = apply_filters( 'wupdates_gather_ids', array() );
707
- $slug = basename( get_template_directory() );
708
- if ( ! isset( $wupdates_ids[ $slug ] ) || ! isset( $wupdates_ids[ $slug ]['id'] ) ) {
709
- return false;
710
- }
711
-
712
- return $wupdates_ids[ $slug ]['id'];
713
- }
714
-
715
- /**
716
- * Check if the $haystack contains any of the needles.
717
- *
718
- * @param string $haystack
719
- * @param array $needles
720
- *
721
- * @return bool
722
- */
723
- public static function string_contains_any( $haystack, $needles ) {
724
- foreach ( $needles as $needle ) {
725
- if ( false !== strpos( $haystack, $needle ) ) {
726
- return true;
727
- }
728
- }
729
-
730
- return false;
731
- }
732
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin-notifications-manager/class-notification-logicalexpression.php DELETED
@@ -1,441 +0,0 @@
1
- <?php
2
-
3
- /**
4
- *
5
- * A class to handle logical expression for notification conditions.
6
- *
7
- * Please note that we only support scalar data types and lists of these data types (only when the operator operates on lists)!
8
- */
9
- class Pixcloud_Notification_LogicalExpression {
10
-
11
- /**
12
- * All the supported operators.
13
- *
14
- * @var array
15
- */
16
- protected static $all_operators = array(
17
- 'equal', 'not_equal', 'is_empty', 'is_not_empty',
18
- 'less', 'less_or_equal', 'greater', 'greater_or_equal',
19
- 'begins_with', 'not_begins_with', 'contains', 'not_contains', 'ends_with', 'not_ends_with',
20
- 'between', 'not_between',
21
- 'in', 'not_in', 'any', 'all',
22
- );
23
-
24
- /**
25
- * All the unary operators (i.e. work with only the left operand).
26
- *
27
- * @var array
28
- */
29
- protected static $unary_operators = array(
30
- 'is_empty', 'is_not_empty',
31
- );
32
-
33
- /**
34
- * All the binary operators (i.e. work with left and a single right operand).
35
- *
36
- * @var array
37
- */
38
- protected static $binary_operators = array(
39
- 'equal', 'not_equal',
40
- 'less', 'less_or_equal', 'greater', 'greater_or_equal',
41
- 'begins_with', 'not_begins_with', 'contains', 'not_contains', 'ends_with', 'not_ends_with',
42
- );
43
-
44
- /**
45
- * All the ternary operators (i.e. work with a left operand and two right operands).
46
- *
47
- * @var array
48
- */
49
- protected static $ternary_operators = array(
50
- 'between', 'not_between',
51
- );
52
-
53
-
54
- /**
55
- * All the list operators (i.e. work with a (list) left operand and (list) right operand).
56
- *
57
- * @var array
58
- */
59
- protected static $list_operators = array(
60
- 'in', 'not_in', 'any', 'all',
61
- );
62
-
63
- /**
64
- * Evaluate a logical expression with one or two operands and an operator.
65
- *
66
- * @param mixed $left
67
- * @param string $operator
68
- * @param mixed $right Optional.
69
- *
70
- * @return bool|null The logical expression result or null on invalid data.
71
- */
72
- public static function evaluate( $left, $operator, $right = null ) {
73
- // Reject unknown operators.
74
- if ( ! in_array( $operator, self::$all_operators ) ) {
75
- return null;
76
- }
77
- // Now, check the number of values a operator can handle and reject on wrong number.
78
- if ( in_array( $operator, self::$binary_operators ) && is_array( $right ) && count( $right ) > 1 ) {
79
- return null;
80
- }
81
- if ( in_array( $operator, self::$ternary_operators ) && ( ! is_array( $right ) || count( $right ) != 2 ) ) {
82
- return null;
83
- }
84
- if ( in_array( $operator, self::$list_operators ) && ! is_array( $right ) ) {
85
- return null;
86
- }
87
-
88
- // Reject missing operator evaluation method.
89
- if ( ! method_exists( __CLASS__, 'evaluate_' . $operator ) ) {
90
- return null;
91
- }
92
-
93
- return (bool) call_user_func( array( __CLASS__, 'evaluate_' . $operator ), $left, $right );
94
- }
95
-
96
- /* =============================
97
- * EVALUATORS FOR EACH OPERATOR.
98
- */
99
-
100
- /**
101
- * Determine if the left operand is equal to the right operand. The comparison is strict type.
102
- *
103
- * @param mixed $left
104
- * @param mixed $right
105
- *
106
- * @return bool
107
- */
108
- public static function evaluate_equal( $left, $right ) {
109
- // Sanity check.
110
- if ( is_array( $right ) ) {
111
- $right = array_shift( $right );
112
- }
113
-
114
- return $left === $right;
115
- }
116
-
117
- /**
118
- * Determine if the left operand is not equal to the right operand. The comparison is strict type.
119
- *
120
- * @param mixed $left
121
- * @param mixed $right
122
- *
123
- * @return bool
124
- */
125
- public static function evaluate_not_equal( $left, $right ) {
126
- // Sanity check.
127
- if ( is_array( $right ) ) {
128
- $right = array_shift( $right );
129
- }
130
-
131
- return $left !== $right;
132
- }
133
-
134
- /**
135
- * Determine if the left operand is empty (the php empty() function is applied).
136
- *
137
- * @param mixed $left
138
- * @param mixed $right Optional. Not used.
139
- *
140
- * @return bool
141
- */
142
- public static function evaluate_is_empty( $left, $right = null ) {
143
- return empty( $left );
144
- }
145
-
146
- /**
147
- * Determine if the left operand is not empty (the php empty() function is applied).
148
- *
149
- * @param mixed $left
150
- * @param mixed $right Optional. Not used.
151
- *
152
- * @return bool
153
- */
154
- public static function evaluate_is_not_empty( $left, $right = null ) {
155
- return ! empty( $left );
156
- }
157
-
158
- /**
159
- * Determine if the left (numeric) operand less than the right (numeric) operand.
160
- *
161
- * @param int|double|float $left
162
- * @param int|double|float $right
163
- *
164
- * @return bool
165
- */
166
- public static function evaluate_less( $left, $right ) {
167
- // Sanity check.
168
- if ( is_array( $right ) ) {
169
- $right = array_shift( $right );
170
- }
171
-
172
- return $left < $right;
173
- }
174
-
175
- /**
176
- * Determine if the left (numeric) operand less or equal than the right (numeric) operand.
177
- *
178
- * @param int|double|float $left
179
- * @param int|double|float $right
180
- *
181
- * @return bool
182
- */
183
- public static function evaluate_less_or_equal( $left, $right ) {
184
- // Sanity check.
185
- if ( is_array( $right ) ) {
186
- $right = array_shift( $right );
187
- }
188
-
189
- return $left <= $right;
190
- }
191
-
192
- /**
193
- * Determine if the left (numeric) operand greater than the right (numeric) operand.
194
- *
195
- * @param int|double|float $left
196
- * @param int|double|float $right
197
- *
198
- * @return bool
199
- */
200
- public static function evaluate_greater( $left, $right ) {
201
- // Sanity check.
202
- if ( is_array( $right ) ) {
203
- $right = array_shift( $right );
204
- }
205
-
206
- return $left > $right;
207
- }
208
-
209
- /**
210
- * Determine if the left (numeric) operand greater or equal than the right (numeric) operand.
211
- *
212
- * @param int|double|float $left
213
- * @param int|double|float $right
214
- *
215
- * @return bool
216
- */
217
- public static function evaluate_greater_or_equal( $left, $right ) {
218
- // Sanity check.
219
- if ( is_array( $right ) ) {
220
- $right = array_shift( $right );
221
- }
222
-
223
- return $left >= $right;
224
- }
225
-
226
- /**
227
- * Determine if the right (string) operand is at start of the left (string) operand.
228
- *
229
- * @param string $left
230
- * @param string $right
231
- *
232
- * @return bool
233
- */
234
- public static function evaluate_begins_with( $left, $right ) {
235
- // Sanity check.
236
- if ( is_array( $right ) ) {
237
- $right = array_shift( $right );
238
- }
239
-
240
- return 0 === strpos( $left, $right );
241
- }
242
-
243
- /**
244
- * Determine if the right (string) operand is not at start of the left (string) operand.
245
- *
246
- * @param string $left
247
- * @param string $right
248
- *
249
- * @return bool
250
- */
251
- public static function evaluate_not_begins_with( $left, $right ) {
252
- // Sanity check.
253
- if ( is_array( $right ) ) {
254
- $right = array_shift( $right );
255
- }
256
-
257
- return 0 !== strpos( $left, $right );
258
- }
259
-
260
- /**
261
- * Determine if the right (string) operand is part of the left (string) operand.
262
- *
263
- * @param string $left
264
- * @param string $right
265
- *
266
- * @return bool
267
- */
268
- public static function evaluate_contains( $left, $right ) {
269
- // Sanity check.
270
- if ( is_array( $right ) ) {
271
- $right = array_shift( $right );
272
- }
273
-
274
- return false !== strpos( $left, $right );
275
- }
276
-
277
- /**
278
- * Determine if the right (string) operand is not part of the left (string) operand.
279
- *
280
- * @param string $left
281
- * @param string $right
282
- *
283
- * @return bool
284
- */
285
- public static function evaluate_not_contains( $left, $right ) {
286
- // Sanity check.
287
- if ( is_array( $right ) ) {
288
- $right = array_shift( $right );
289
- }
290
-
291
- return false === strpos( $left, $right );
292
- }
293
-
294
- /**
295
- * Determine if the right (string) operand is at end of the left (string) operand.
296
- *
297
- * @param string $left
298
- * @param string $right
299
- *
300
- * @return bool
301
- */
302
- public static function evaluate_ends_with( $left, $right ) {
303
- // Sanity check.
304
- if ( is_array( $right ) ) {
305
- $right = array_shift( $right );
306
- }
307
-
308
- return ( strlen( $left ) - strlen( $right ) ) === strrpos( $left, $right );
309
- }
310
-
311
- /**
312
- * Determine if the right (string) operand is not at end of the left (string) operand.
313
- *
314
- * @param string $left
315
- * @param string $right
316
- *
317
- * @return bool
318
- */
319
- public static function evaluate_not_ends_with( $left, $right ) {
320
- // Sanity check.
321
- if ( is_array( $right ) ) {
322
- $right = array_shift( $right );
323
- }
324
-
325
- return ( strlen( $left ) - strlen( $right ) ) !== strrpos( $left, $right );
326
- }
327
-
328
- /**
329
- * Determine if the left operand is between in the two values in right one.
330
- *
331
- * @param $left
332
- * @param array $right
333
- *
334
- * @return bool
335
- */
336
- public static function evaluate_between( $left, $right ) {
337
- // Get the two values
338
- $small = array_shift( $right );
339
- $big = array_shift( $right );
340
-
341
- return ( $small <= $left ) && ( $left <= $big );
342
- }
343
-
344
- /**
345
- * Determine if the left operand is not between in the two values in right one.
346
- *
347
- * @param $left
348
- * @param array $right
349
- *
350
- * @return bool
351
- */
352
- public static function evaluate_not_between( $left, $right ) {
353
- // Get the two values
354
- $small = array_shift( $right );
355
- $big = array_shift( $right );
356
-
357
- return ! ( ( $small <= $left ) && ( $left <= $big ) );
358
- }
359
-
360
- /**
361
- * Determine if the left operand is present in the right (list) one.
362
- *
363
- * @param $left
364
- * @param array $right
365
- *
366
- * @return bool
367
- */
368
- public static function evaluate_in( $left, $right ) {
369
- // Sanity check.
370
- if ( ! is_array( $right ) ) {
371
- $right = array( $right );
372
- }
373
-
374
- return ( in_array( $left, $right ) );
375
- }
376
-
377
- /**
378
- * Determine if the left operand is not present in the right (list) one.
379
- *
380
- * @param $left
381
- * @param array $right
382
- *
383
- * @return bool
384
- */
385
- public static function evaluate_not_in( $left, $right ) {
386
- // Sanity check.
387
- if ( ! is_array( $right ) ) {
388
- $right = array( $right );
389
- }
390
-
391
- return ! ( in_array( $left, $right ) );
392
- }
393
-
394
- /**
395
- * Determine if any of the values in the left operand are present in the right one.
396
- *
397
- * @param array $left
398
- * @param array $right
399
- *
400
- * @return bool
401
- */
402
- public static function evaluate_any( $left, $right ) {
403
- // Sanity check.
404
- if ( ! is_array( $left ) ) {
405
- $left = array( $left );
406
- }
407
- if ( ! is_array( $right ) ) {
408
- $right = array( $right );
409
- }
410
-
411
- $intersect = array_intersect( $left, $right );
412
-
413
- return ! empty( $intersect );
414
- }
415
-
416
- /**
417
- * Determine if all of the values in the left operand are present in the right one.
418
- *
419
- * @param array $left
420
- * @param array $right
421
- *
422
- * @return bool
423
- */
424
- public static function evaluate_all( $left, $right ) {
425
- // Sanity check.
426
- if ( ! is_array( $left ) ) {
427
- $left = array( $left );
428
- }
429
- if ( ! is_array( $right ) ) {
430
- $right = array( $right );
431
- }
432
-
433
- $intersect = array_intersect( $left, $right );
434
-
435
- return count( $intersect ) === count( $left );
436
- }
437
-
438
- /* =======
439
- * HELPERS
440
- */
441
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin-notifications-manager/index.php DELETED
@@ -1,3 +0,0 @@
1
- <?php
2
- // Silence is golden
3
- // Golden is deprecated
 
 
 
includes/class-customify-customizer.php CHANGED
@@ -90,13 +90,6 @@ if ( ! class_exists( 'Customify_Customizer' ) ) :
90
 
91
  $this->localized['options_name'] = PixCustomifyPlugin()->get_options_key();
92
 
93
- if ( $this->import_button_exists() ) {
94
- $this->localized['import_rest_url'] = get_rest_url( '/customify/1.0/' );
95
- $this->localized['import_rest_nonce'] = wp_create_nonce( 'wp_rest' );
96
-
97
- $this->register_import_api();
98
- }
99
-
100
  require_once( PixCustomifyPlugin()->get_base_path() . 'features/class-Font_Selector.php' );
101
  $this->localized['theme_fonts'] = $this->theme_fonts = Customify_Font_Selector::instance()->get_theme_fonts();
102
 
@@ -108,30 +101,6 @@ if ( ! class_exists( 'Customify_Customizer' ) ) :
108
  $this->add_hooks();
109
  }
110
 
111
- /**
112
- * Use this function when you need to know if an import button is used
113
- * @return bool
114
- */
115
- protected function import_button_exists() {
116
- $options_details = PixCustomifyPlugin()->get_options_details(true);
117
-
118
- foreach ( $options_details as $option ) {
119
- if ( isset( $option['type'] ) && 'import_demo_data' === $option['type'] ) {
120
- return true;
121
- break;
122
- }
123
- }
124
-
125
- return false;
126
- }
127
-
128
- protected function register_import_api() {
129
-
130
- include_once( PixCustomifyPlugin()->get_base_path() . 'features/class-Customify_Importer.php' );
131
- $controller = new Customify_Importer_Controller();
132
- $controller->init();
133
- }
134
-
135
  /**
136
  * Initiate our hooks
137
  *
@@ -309,7 +278,7 @@ if ( ! class_exists( 'Customify_Customizer' ) ) :
309
  return;
310
  }
311
 
312
- foreach ( PixCustomifyPlugin()->get_options_details( false, true) as $option_id => $option_details ) {
313
 
314
  if ( isset( $option_details['type'] ) && $option_details['type'] === 'custom_background' ) {
315
  $custom_background_output = $this->process_custom_background_field_output( $option_details ); ?>
@@ -359,7 +328,7 @@ if ( ! class_exists( 'Customify_Customizer' ) ) :
359
  function get_dynamic_style() {
360
  $custom_css = '';
361
 
362
- foreach ( PixCustomifyPlugin()->get_options_details(true) as $option_id => $option_details ) {
363
 
364
  if ( isset( $option_details['css'] ) && ! empty( $option_details['css'] ) ) {
365
  // now process each
@@ -431,7 +400,7 @@ if ( ! class_exists( 'Customify_Customizer' ) ) :
431
  function get_typography_dynamic_style() {
432
  $output = '';
433
 
434
- $this->get_typography_fields( PixCustomifyPlugin()->get_options_details(true), 'type', 'typography', $this->typo_settings );
435
 
436
  if ( empty( $this->typo_settings ) ) {
437
  return $output;
@@ -559,7 +528,7 @@ if ( ! class_exists( 'Customify_Customizer' ) ) :
559
  function get_typography_dynamic_script() {
560
  $output = '';
561
 
562
- $this->get_typography_fields( PixCustomifyPlugin()->get_options_details(true), 'type', 'typography', $this->typo_settings );
563
 
564
  if ( empty( $this->typo_settings ) ) {
565
  return $output;
@@ -1719,24 +1688,6 @@ if ( ! class_exists( 'Customify_Customizer' ) ) :
1719
  $control_class_name = 'Pix_Customize_HTML_Control';
1720
  break;
1721
 
1722
- case 'import_demo_data' :
1723
- if ( isset( $field_config['html'] ) || ! empty( $field_config['html'] ) ) {
1724
- $control_args['html'] = $field_config['html'];
1725
- }
1726
-
1727
- if ( ! isset( $field_config['label'] ) || empty( $field_config['label'] ) ) {
1728
- $control_args['label'] = esc_html__( 'Import', 'customify' );
1729
- } else {
1730
- $control_args['label'] = $field_config['label'];
1731
- }
1732
-
1733
- if ( isset( $field_config['notices'] ) && ! empty( $field_config['notices'] ) ) {
1734
- $control_args['notices'] = $field_config['notices'];
1735
- }
1736
-
1737
- $control_class_name = 'Pix_Customize_Import_Demo_Data_Control';
1738
- break;
1739
-
1740
  default:
1741
  // if we don't have a real control just quit, it doesn't even matter
1742
  return;
90
 
91
  $this->localized['options_name'] = PixCustomifyPlugin()->get_options_key();
92
 
 
 
 
 
 
 
 
93
  require_once( PixCustomifyPlugin()->get_base_path() . 'features/class-Font_Selector.php' );
94
  $this->localized['theme_fonts'] = $this->theme_fonts = Customify_Font_Selector::instance()->get_theme_fonts();
95
 
101
  $this->add_hooks();
102
  }
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  /**
105
  * Initiate our hooks
106
  *
278
  return;
279
  }
280
 
281
+ foreach ( PixCustomifyPlugin()->get_options_details( false, true ) as $option_id => $option_details ) {
282
 
283
  if ( isset( $option_details['type'] ) && $option_details['type'] === 'custom_background' ) {
284
  $custom_background_output = $this->process_custom_background_field_output( $option_details ); ?>
328
  function get_dynamic_style() {
329
  $custom_css = '';
330
 
331
+ foreach ( PixCustomifyPlugin()->get_options_details( true ) as $option_id => $option_details ) {
332
 
333
  if ( isset( $option_details['css'] ) && ! empty( $option_details['css'] ) ) {
334
  // now process each
400
  function get_typography_dynamic_style() {
401
  $output = '';
402
 
403
+ $this->get_typography_fields( PixCustomifyPlugin()->get_options_details( true ), 'type', 'typography', $this->typo_settings );
404
 
405
  if ( empty( $this->typo_settings ) ) {
406
  return $output;
528
  function get_typography_dynamic_script() {
529
  $output = '';
530
 
531
+ $this->get_typography_fields( PixCustomifyPlugin()->get_options_details( true ), 'type', 'typography', $this->typo_settings );
532
 
533
  if ( empty( $this->typo_settings ) ) {
534
  return $output;
1688
  $control_class_name = 'Pix_Customize_HTML_Control';
1689
  break;
1690
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1691
  default:
1692
  // if we don't have a real control just quit, it doesn't even matter
1693
  return;
includes/class-customify-settings.php CHANGED
@@ -80,10 +80,13 @@ class Customify_Settings {
80
  * Register the administration menu for this plugin into the WordPress Dashboard menu.
81
  */
82
  function add_plugin_admin_menu() {
83
- $this->plugin_screen_hook_suffix = add_options_page( esc_html__( 'Customify', 'customify' ), esc_html__( 'Customify', 'customify' ), 'edit_plugins', $this->slug, array(
84
- $this,
85
- 'display_plugin_admin_page'
86
- ) );
 
 
 
87
  }
88
 
89
  /**
80
  * Register the administration menu for this plugin into the WordPress Dashboard menu.
81
  */
82
  function add_plugin_admin_menu() {
83
+ $this->plugin_screen_hook_suffix = add_options_page(
84
+ esc_html__( 'Customify', 'customify' ),
85
+ esc_html__( 'Customify', 'customify' ),
86
+ 'manage_options',
87
+ $this->slug,
88
+ array( $this, 'display_plugin_admin_page' )
89
+ );
90
  }
91
 
92
  /**
includes/class-customify-style-manager.php CHANGED
@@ -55,14 +55,6 @@ class Customify_Style_Manager {
55
  */
56
  protected $font_palettes = null;
57
 
58
- /**
59
- * The notifications object.
60
- * @var null|Pixcloud_Admin_Notifications_Manager
61
- * @access public
62
- * @since 1.9.0
63
- */
64
- protected $notifications = null;
65
-
66
  /**
67
  * The Cloud API object.
68
  * @var null|Customify_Cloud_Api
@@ -104,18 +96,6 @@ class Customify_Style_Manager {
104
  require_once 'class-customify-font-palettes.php';
105
  $this->font_palettes = Customify_Font_Palettes::instance();
106
 
107
- /**
108
- * Initialize the Notifications logic.
109
- */
110
- require_once 'admin-notifications-manager/class-admin-notifications-manager.php';
111
- $this->notifications = Pixcloud_Admin_Notifications_Manager::instance(
112
- array(
113
- 'plugin_name' => 'Customify',
114
- 'text_domain' => 'customify',
115
- 'version' => '',
116
- )
117
- );
118
-
119
  /**
120
  * Initialize the Cloud API logic.
121
  */
55
  */
56
  protected $font_palettes = null;
57
 
 
 
 
 
 
 
 
 
58
  /**
59
  * The Cloud API object.
60
  * @var null|Customify_Cloud_Api
96
  require_once 'class-customify-font-palettes.php';
97
  $this->font_palettes = Customify_Font_Palettes::instance();
98
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  /**
100
  * Initialize the Cloud API logic.
101
  */
includes/class-pixcustomify.php CHANGED
@@ -216,20 +216,30 @@ class PixCustomifyPlugin {
216
  return $this->opt_name;
217
  }
218
 
 
 
 
 
219
  // First try and get the cached data
220
  $data = get_option( $this->get_customizer_opt_name_cache_key() );
 
221
 
222
- // Get the cache data expiration timestamp.
223
- $expire_timestamp = get_option( $this->get_customizer_opt_name_cache_key() . '_timestamp' );
 
 
 
224
 
225
  // The data isn't set, is expired or we were instructed to skip the cache; we need to regenerate the config.
226
  if ( true === $skip_cache || false === $data || false === $expire_timestamp || $expire_timestamp < time() ) {
227
 
228
  $data = $this->get_customizer_config( 'opt-name' );
229
 
230
- // Cache the data in an option for 6 hours
231
- update_option( $this->get_customizer_opt_name_cache_key() , $data, true );
232
- update_option( $this->get_customizer_opt_name_cache_key() . '_timestamp' , time() + 6 * HOUR_IN_SECONDS, true );
 
 
233
  }
234
 
235
  $this->opt_name = $data;
@@ -242,6 +252,8 @@ class PixCustomifyPlugin {
242
 
243
  public function invalidate_customizer_opt_name_cache() {
244
  update_option( $this->get_customizer_opt_name_cache_key() . '_timestamp' , time() - 24 * HOUR_IN_SECONDS, true );
 
 
245
  }
246
 
247
  public function filter_invalidate_customizer_opt_name_cache( $value ) {
@@ -257,19 +269,16 @@ class PixCustomifyPlugin {
257
  if ( true === $only_minimal_details && ! empty( $this->options_minimal_details ) ) {
258
  return $this->options_minimal_details;
259
  }
260
-
261
  if ( ! empty( $this->options_details ) ) {
262
  return $this->options_details;
263
  }
264
 
265
- // We will first look for cached data
266
-
267
- // We don't force skip the cache for AJAX requests for performance reasons.
268
- if ( defined('CUSTOMIFY_ALWAYS_GENERATE_CUSTOMIZER_CONFIG' )
269
- && true === CUSTOMIFY_ALWAYS_GENERATE_CUSTOMIZER_CONFIG ) {
270
  $skip_cache = true;
271
  }
272
 
 
 
273
  $data = $this->options_minimal_details = get_option( $this->get_options_minimal_details_cache_key() );
274
  if ( false !== $data && false === $only_minimal_details ) {
275
  $extra_details_data = get_option( $this->get_options_extra_details_cache_key() );
@@ -277,7 +286,7 @@ class PixCustomifyPlugin {
277
  $data = $this->options_details = Customify_Array::array_merge_recursive_distinct( $data, $extra_details_data );
278
  } else {
279
  // Something is wrong with the extra details and we need to regenerate.
280
- $skip_cache = true;
281
  }
282
  }
283
 
@@ -287,8 +296,13 @@ class PixCustomifyPlugin {
287
  return $data;
288
  }
289
 
290
- // Get the cached data expiration timestamp.
291
- $expire_timestamp = get_option( $this->get_options_details_cache_timestamp_key() );
 
 
 
 
 
292
 
293
  // The data isn't set, is expired or we were instructed to skip the cache; we need to regenerate the config.
294
  if ( true === $skip_cache || false === $data || false === $expire_timestamp || $expire_timestamp < time() ) {
@@ -355,10 +369,12 @@ class PixCustomifyPlugin {
355
  }
356
  }
357
 
358
- // Cache the data for 6 hours
359
- update_option( $this->get_options_minimal_details_cache_key() , $options_minimal_details, true );
360
- update_option( $this->get_options_extra_details_cache_key() , $options_extra_details, false ); // we will not autoload extra details for performance reasons.
361
- update_option( $this->get_options_details_cache_timestamp_key(), time() + 6 * HOUR_IN_SECONDS, true );
 
 
362
 
363
  $data = $this->options_minimal_details = $options_minimal_details;
364
  $this->options_details = Customify_Array::array_merge_recursive_distinct( $options_minimal_details, $options_extra_details );
@@ -370,6 +386,54 @@ class PixCustomifyPlugin {
370
  return $data;
371
  }
372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  private function get_options_minimal_details_cache_key() {
374
  return 'customify_options_minimal_details';
375
  }
@@ -384,6 +448,8 @@ class PixCustomifyPlugin {
384
 
385
  public function invalidate_options_details_cache() {
386
  update_option( $this->get_options_details_cache_timestamp_key(), time() - 24 * HOUR_IN_SECONDS, true );
 
 
387
  }
388
 
389
  public function filter_invalidate_options_details_cache( $value ) {
@@ -425,20 +491,17 @@ class PixCustomifyPlugin {
425
  * @return array
426
  */
427
  protected function load_customizer_config( $skip_cache = false ) {
428
- if ( ! empty( $this->customizer_config ) && true !== $skip_cache ) {
429
  return $this->customizer_config;
430
  }
431
 
432
- // First try and get the cached data
433
- $data = get_option( $this->get_customizer_config_cache_key() );
434
-
435
- // We don't force skip the cache for AJAX requests for performance reasons.
436
- if ( ! wp_doing_ajax()
437
- && defined('CUSTOMIFY_ALWAYS_GENERATE_CUSTOMIZER_CONFIG' )
438
- && true === CUSTOMIFY_ALWAYS_GENERATE_CUSTOMIZER_CONFIG ) {
439
  $skip_cache = true;
440
  }
441
 
 
 
 
442
  // For performance reasons, we will use the cached data (even if stale)
443
  // when a user is not logged in or a user without administrative capabilities is logged in.
444
  if ( false !== $data && false === $skip_cache && ! current_user_can( 'manage_options' ) ) {
@@ -446,8 +509,13 @@ class PixCustomifyPlugin {
446
  return $data;
447
  }
448
 
449
- // Get the cache data expiration timestamp.
450
- $expire_timestamp = get_option( $this->get_customizer_config_cache_key() . '_timestamp' );
 
 
 
 
 
451
 
452
  // The data isn't set, is expired or we were instructed to skip the cache; we need to regenerate the config.
453
  if ( true === $skip_cache || false === $data || false === $expire_timestamp || $expire_timestamp < time() ) {
@@ -456,9 +524,11 @@ class PixCustomifyPlugin {
456
  // We apply a second filter for those that wish to work with the final config and not rely on a a huge priority number.
457
  $data = apply_filters( 'customify_final_config', $data );
458
 
459
- // Cache the data in an option for 6 hours
460
- update_option( $this->get_customizer_config_cache_key() , $data, false );
461
- update_option( $this->get_customizer_config_cache_key() . '_timestamp' , time() + 6 * HOUR_IN_SECONDS, true );
 
 
462
  }
463
 
464
  $this->customizer_config = $data;
@@ -471,10 +541,12 @@ class PixCustomifyPlugin {
471
 
472
  public function invalidate_customizer_config_cache() {
473
  update_option( $this->get_customizer_config_cache_key() . '_timestamp' , time() - 24 * HOUR_IN_SECONDS, true );
 
 
474
  }
475
 
476
  /**
477
- * Invalidate the customizer config cache, when hooked via a filter.
478
  *
479
  * @since 2.4.0
480
  *
@@ -522,10 +594,49 @@ class PixCustomifyPlugin {
522
  return $this->get_options_details( $only_minimal_details, $skip_cache );
523
  }
524
 
525
- protected function get_theme_mod_value( $setting_id ) {
 
 
 
 
 
 
 
 
526
  global $wp_customize;
527
 
528
- if ( empty( $setting_id ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
529
  return null;
530
  }
531
 
@@ -538,8 +649,8 @@ class PixCustomifyPlugin {
538
 
539
  $values = get_theme_mod( $this->get_options_key() );
540
 
541
- if ( ! empty( $values ) && is_array( $values ) && isset( $values[ $setting_id ] ) ) {
542
- return $values[ $setting_id ];
543
  }
544
 
545
  return null;
@@ -578,19 +689,39 @@ class PixCustomifyPlugin {
578
  // If we already have the value cached in the option details, we will use that.
579
  $value = $option_details['value'];
580
  } else {
 
 
 
 
 
581
  $setting_id = $this->get_options_key() . '[' . $option_id . ']';
582
- // If we have been explicitly given a setting ID we will use that
583
  if ( ! empty( $option_details['setting_id'] ) ) {
584
  $setting_id = $option_details['setting_id'];
585
  }
586
 
 
 
 
 
 
 
587
  if ( isset( $option_details['setting_type'] ) && $option_details['setting_type'] === 'option' ) {
588
- // We have a setting that is saved in the wp_options table, not in theme_mods.
589
- // We will fetch it directly.
590
  $value = get_option( $setting_id, null );
591
- } else {
592
- // Get the value stores in theme_mods.
593
- $value = $this->get_theme_mod_value( $option_id );
 
 
 
 
 
 
 
 
 
 
 
594
  }
595
  }
596
  }
216
  return $this->opt_name;
217
  }
218
 
219
+ if ( $this->should_force_skip_cache() ) {
220
+ $skip_cache = true;
221
+ }
222
+
223
  // First try and get the cached data
224
  $data = get_option( $this->get_customizer_opt_name_cache_key() );
225
+ $expire_timestamp = false;
226
 
227
+ // Only try to get the expire timestamp if we really need to.
228
+ if ( true !== $skip_cache && false !== $data ) {
229
+ // Get the cache data expiration timestamp.
230
+ $expire_timestamp = get_option( $this->get_customizer_opt_name_cache_key() . '_timestamp' );
231
+ }
232
 
233
  // The data isn't set, is expired or we were instructed to skip the cache; we need to regenerate the config.
234
  if ( true === $skip_cache || false === $data || false === $expire_timestamp || $expire_timestamp < time() ) {
235
 
236
  $data = $this->get_customizer_config( 'opt-name' );
237
 
238
+ if ( true !== $skip_cache ) {
239
+ // Cache the data in an option for 6 hours, but only if we are not supposed to skip the cache entirely.
240
+ update_option( $this->get_customizer_opt_name_cache_key(), $data, true );
241
+ update_option( $this->get_customizer_opt_name_cache_key() . '_timestamp', time() + 6 * HOUR_IN_SECONDS, true );
242
+ }
243
  }
244
 
245
  $this->opt_name = $data;
252
 
253
  public function invalidate_customizer_opt_name_cache() {
254
  update_option( $this->get_customizer_opt_name_cache_key() . '_timestamp' , time() - 24 * HOUR_IN_SECONDS, true );
255
+
256
+ $this->clear_locally_cached_data();
257
  }
258
 
259
  public function filter_invalidate_customizer_opt_name_cache( $value ) {
269
  if ( true === $only_minimal_details && ! empty( $this->options_minimal_details ) ) {
270
  return $this->options_minimal_details;
271
  }
 
272
  if ( ! empty( $this->options_details ) ) {
273
  return $this->options_details;
274
  }
275
 
276
+ if ( $this->should_force_skip_cache() ) {
 
 
 
 
277
  $skip_cache = true;
278
  }
279
 
280
+ // We will first look for cached data
281
+
282
  $data = $this->options_minimal_details = get_option( $this->get_options_minimal_details_cache_key() );
283
  if ( false !== $data && false === $only_minimal_details ) {
284
  $extra_details_data = get_option( $this->get_options_extra_details_cache_key() );
286
  $data = $this->options_details = Customify_Array::array_merge_recursive_distinct( $data, $extra_details_data );
287
  } else {
288
  // Something is wrong with the extra details and we need to regenerate.
289
+ $this->invalidate_options_details_cache();
290
  }
291
  }
292
 
296
  return $data;
297
  }
298
 
299
+ $expire_timestamp = false;
300
+
301
+ // Only try to get the expire timestamp if we really need to.
302
+ if ( true !== $skip_cache && false !== $data ) {
303
+ // Get the cached data expiration timestamp.
304
+ $expire_timestamp = get_option( $this->get_options_details_cache_timestamp_key() );
305
+ }
306
 
307
  // The data isn't set, is expired or we were instructed to skip the cache; we need to regenerate the config.
308
  if ( true === $skip_cache || false === $data || false === $expire_timestamp || $expire_timestamp < time() ) {
369
  }
370
  }
371
 
372
+ if ( true !== $skip_cache ) {
373
+ // Cache the data for 6 hours, but only if we are not supposed to skip the cache entirely.
374
+ update_option( $this->get_options_minimal_details_cache_key(), $options_minimal_details, true );
375
+ update_option( $this->get_options_extra_details_cache_key(), $options_extra_details, false ); // we will not autoload extra details for performance reasons.
376
+ update_option( $this->get_options_details_cache_timestamp_key(), time() + 6 * HOUR_IN_SECONDS, true );
377
+ }
378
 
379
  $data = $this->options_minimal_details = $options_minimal_details;
380
  $this->options_details = Customify_Array::array_merge_recursive_distinct( $options_minimal_details, $options_extra_details );
386
  return $data;
387
  }
388
 
389
+ private function should_force_skip_cache() {
390
+ // If our development constant is defined and true, we will always skip the cache, except for AJAX calls.
391
+ // Other, more specific cases may impose skipping the cache also on AJAX calls.
392
+ if ( ! wp_doing_ajax()
393
+ && defined('CUSTOMIFY_ALWAYS_GENERATE_CUSTOMIZER_CONFIG' )
394
+ && true === CUSTOMIFY_ALWAYS_GENERATE_CUSTOMIZER_CONFIG ) {
395
+ return true;
396
+ }
397
+
398
+ // If we are in the Customizer and the request has a $_POST['customized'] parameter, we will skip the cache
399
+ // since this means that the preview is being reloaded with temporary settings values.
400
+ if ( ! empty( $_POST['customized'] ) ) {
401
+ return true;
402
+ }
403
+
404
+ // If we are currently previewing a theme without being actually active, we should not use cached data.
405
+
406
+ if ( ! empty( $_REQUEST['theme'] ) || ! empty( $_REQUEST['customize_theme'] ) ) {
407
+ return true;
408
+ }
409
+
410
+ /** @var WP_Customize_Manager $wp_customize */
411
+ global $wp_customize;
412
+ if ( ! empty( $wp_customize )
413
+ && method_exists( $wp_customize, 'is_theme_active' )
414
+ && ! $wp_customize->is_theme_active() ) {
415
+
416
+ return true;
417
+ }
418
+
419
+ return false;
420
+ }
421
+
422
+ /**
423
+ * This will clear any instance properties that are used as local cache during a request to avoid
424
+ * fetching the data from DB on each method call.
425
+ *
426
+ * This may be called during a request when something happens that (potentially) invalidates our data mid-request.
427
+ */
428
+ public function clear_locally_cached_data() {
429
+ $this->opt_name = null;
430
+
431
+ $this->customizer_config = null;
432
+
433
+ $this->options_minimal_details = null;
434
+ $this->options_details = null;
435
+ }
436
+
437
  private function get_options_minimal_details_cache_key() {
438
  return 'customify_options_minimal_details';
439
  }
448
 
449
  public function invalidate_options_details_cache() {
450
  update_option( $this->get_options_details_cache_timestamp_key(), time() - 24 * HOUR_IN_SECONDS, true );
451
+
452
+ $this->clear_locally_cached_data();
453
  }
454
 
455
  public function filter_invalidate_options_details_cache( $value ) {
491
  * @return array
492
  */
493
  protected function load_customizer_config( $skip_cache = false ) {
494
+ if ( ! empty( $this->customizer_config ) ) {
495
  return $this->customizer_config;
496
  }
497
 
498
+ if ( $this->should_force_skip_cache() ) {
 
 
 
 
 
 
499
  $skip_cache = true;
500
  }
501
 
502
+ // First try and get the cached data
503
+ $data = get_option( $this->get_customizer_config_cache_key() );
504
+
505
  // For performance reasons, we will use the cached data (even if stale)
506
  // when a user is not logged in or a user without administrative capabilities is logged in.
507
  if ( false !== $data && false === $skip_cache && ! current_user_can( 'manage_options' ) ) {
509
  return $data;
510
  }
511
 
512
+ $expire_timestamp = false;
513
+
514
+ // Only try to get the expire timestamp if we really need to.
515
+ if ( true !== $skip_cache && false !== $data ) {
516
+ // Get the cache data expiration timestamp.
517
+ $expire_timestamp = get_option( $this->get_customizer_config_cache_key() . '_timestamp' );
518
+ }
519
 
520
  // The data isn't set, is expired or we were instructed to skip the cache; we need to regenerate the config.
521
  if ( true === $skip_cache || false === $data || false === $expire_timestamp || $expire_timestamp < time() ) {
524
  // We apply a second filter for those that wish to work with the final config and not rely on a a huge priority number.
525
  $data = apply_filters( 'customify_final_config', $data );
526
 
527
+ if ( true !== $skip_cache ) {
528
+ // Cache the data in an option for 6 hours, but only if we are not supposed to skip the cache entirely.
529
+ update_option( $this->get_customizer_config_cache_key(), $data, false );
530
+ update_option( $this->get_customizer_config_cache_key() . '_timestamp', time() + 6 * HOUR_IN_SECONDS, true );
531
+ }
532
  }
533
 
534
  $this->customizer_config = $data;
541
 
542
  public function invalidate_customizer_config_cache() {
543
  update_option( $this->get_customizer_config_cache_key() . '_timestamp' , time() - 24 * HOUR_IN_SECONDS, true );
544
+
545
+ $this->clear_locally_cached_data();
546
  }
547
 
548
  /**
549
+ * Invalidate the customizer config cache, when hooked via a filter (just pass through the value).
550
  *
551
  * @since 2.4.0
552
  *
594
  return $this->get_options_details( $only_minimal_details, $skip_cache );
595
  }
596
 
597
+ /**
598
+ * Get the value of a setting ID saved in a wp_options array entry.
599
+ *
600
+ * @param string $option_id This is only the option ID, that may differ from setting ID ( like in `body_font` vs `rosa_opt[body_font]`)
601
+ * @param string $setting_id We will use this to get the Customizer value, when in that context.
602
+ *
603
+ * @return mixed|null
604
+ */
605
+ protected function get_option_mod_value( $option_id, $setting_id ) {
606
  global $wp_customize;
607
 
608
+ if ( empty( $option_id ) || empty( $setting_id ) ) {
609
+ return null;
610
+ }
611
+
612
+ if ( ! empty( $wp_customize ) && method_exists( $wp_customize, 'get_setting' ) ) {
613
+ $setting = $wp_customize->get_setting( $setting_id );
614
+ if ( ! empty( $setting ) ) {
615
+ return $setting->value();
616
+ }
617
+ }
618
+
619
+ $values = get_option( $this->get_options_key() );
620
+
621
+ if ( ! empty( $values ) && is_array( $values ) && isset( $values[ $option_id ] ) ) {
622
+ return $values[ $option_id ];
623
+ }
624
+
625
+ return null;
626
+ }
627
+
628
+ /**
629
+ * Get the value of a certain setting ID saved in the theme mod array.
630
+ *
631
+ * @param string $option_id This is only the option ID, that may differ from setting ID ( like in `body_font` vs `rosa_opt[body_font]`)
632
+ * @param string $setting_id We will use this to get the Customizer value, when in that context.
633
+ *
634
+ * @return mixed|null
635
+ */
636
+ protected function get_theme_mod_value( $option_id, $setting_id ) {
637
+ global $wp_customize;
638
+
639
+ if ( empty( $option_id ) || empty( $setting_id ) ) {
640
  return null;
641
  }
642
 
649
 
650
  $values = get_theme_mod( $this->get_options_key() );
651
 
652
+ if ( ! empty( $values ) && is_array( $values ) && isset( $values[ $option_id ] ) ) {
653
+ return $values[ $option_id ];
654
  }
655
 
656
  return null;
689
  // If we already have the value cached in the option details, we will use that.
690
  $value = $option_details['value'];
691
  } else {
692
+ $value = null;
693
+
694
+ /*
695
+ * First determine the setting ID.
696
+ */
697
  $setting_id = $this->get_options_key() . '[' . $option_id . ']';
698
+ // If we have been explicitly given a setting ID we will use that.
699
  if ( ! empty( $option_details['setting_id'] ) ) {
700
  $setting_id = $option_details['setting_id'];
701
  }
702
 
703
+ /*
704
+ * Second, try to get the stored value of the setting.
705
+ */
706
+
707
+ // If we have a setting that directly declares it (not deduced like when registering fields in the Customizer)
708
+ // should be saved in the wp_options table, not in theme_mods, we will attempt to fetch it directly, first.
709
  if ( isset( $option_details['setting_type'] ) && $option_details['setting_type'] === 'option' ) {
 
 
710
  $value = get_option( $setting_id, null );
711
+ }
712
+
713
+ // If we don't have a value, we will grab the setting value from the array of values stored in either
714
+ // a wp_option entry or in the theme_mods.
715
+ // The "save as array" behavior happens even in the case of 'option' setting type if
716
+ // the setting ID is of the form 'rosa_option[some_key]' (aka a multidimensional setting ID).
717
+ if ( null === $value ) {
718
+ if ( PixCustomifyPlugin()->settings->get_plugin_setting( 'values_store_mod' ) === 'option' ) {
719
+ // Get the value stored in a option.
720
+ $value = $this->get_option_mod_value( $option_id, $setting_id );
721
+ } else {
722
+ // Get the value stored in theme_mods.
723
+ $value = $this->get_theme_mod_value( $option_id, $setting_id );
724
+ }
725
  }
726
  }
727
  }
js/customizer.js CHANGED
@@ -241,32 +241,6 @@
241
  $(this).trigger('customify:preset-change')
242
  })
243
 
244
- // bind our event on click
245
- $(document).on('click', '.customify_import_demo_data_button', function (event) {
246
- let key = $(this).data('key')
247
- let import_queue = new Queue(api)
248
- let steps = []
249
-
250
- if (!_.isUndefined(customify_settings.settings[key].imports)) {
251
-
252
- $.each(customify_settings.settings[key].imports, function (i, import_setts, k) {
253
- if (_.isUndefined(import_setts.steps)) {
254
- steps.push({id: i, type: import_setts.type})
255
- } else {
256
- var count = import_setts.steps
257
-
258
- while (count >= 1) {
259
- steps.push({id: i, type: import_setts.type, count: count})
260
- count = count - 1
261
- }
262
- }
263
- })
264
- }
265
-
266
- import_queue.add_steps('import_demo_data_action_id', steps)
267
- return false
268
- })
269
-
270
  customifyBackgroundJsControl.init()
271
 
272
  // sometimes a php save may be needed
@@ -1079,127 +1053,6 @@
1079
  }
1080
  )(jQuery)
1081
 
1082
- var Queue = function () {
1083
- var lastPromise = null
1084
- var queueDeferred = null
1085
- var methodDeferred = null
1086
-
1087
- this.add_steps = function (key, steps, args) {
1088
- var self = this
1089
- this.methodDeferred = $.Deferred()
1090
- this.queueDeferred = this.setup()
1091
-
1092
- $.each(steps, function (i, step) {
1093
- self.queue(key, step)
1094
- })
1095
- }
1096
-
1097
- this.process_remote_step = function (key, data, step) {
1098
- var self = this
1099
-
1100
- if (_.isUndefined(data) || _.isNull(data)) {
1101
- return false
1102
- }
1103
-
1104
- var new_step = step
1105
- $.each(data, function (i, k) {
1106
- debugger
1107
- // prepare data for new requests
1108
- new_step.recall_data = k.data
1109
- new_step.recall_type = k.type
1110
- new_step.type = 'recall'
1111
-
1112
- self.queue(key, new_step, k.id)
1113
- })
1114
- }
1115
-
1116
- this.log_action = function (action, key, msg) {
1117
- if (action === 'start') {
1118
- $('.wpGrade-import-results').show()
1119
- $('.wpGrade-import-results').append('<span class="import_step_note imports_step_' + key + '" ><span class="step_info" data-balloon="Working on it" data-balloon-pos="up"></span>Importing ' + key + '</span>')
1120
- } else if (action === 'end') {
1121
- var $notice = $('.imports_step_' + key + ' .step_info')
1122
-
1123
- if ($notice.length > 0 || msg !== 'undefined') {
1124
- $notice.attr('data-balloon', msg)
1125
- $notice.addClass('success')
1126
- } else {
1127
- $notice.attr('data-balloon', 'Done')
1128
- $notice.addClass('failed')
1129
- }
1130
- }
1131
- }
1132
-
1133
- this.queue = function (key, data, step_key) {
1134
- var self = this
1135
- if (!_.isUndefined(step_key)) {
1136
- this.log_action('start', step_key)
1137
- }
1138
-
1139
- // execute next queue method
1140
- this.queueDeferred.done(this.request(key, data, step_key))
1141
- lastPromise = self.methodDeferred.promise()
1142
- }
1143
-
1144
- this.request = function (key, step, step_key) {
1145
- var self = this
1146
- // call actual method and wrap output in deferred
1147
- //setTimeout( function() {
1148
- var data_args = {
1149
- action: 'customify_import_step',
1150
- step_id: step.id,
1151
- step_type: step.type,
1152
- option_key: key
1153
- }
1154
-
1155
- if (!_.isUndefined(step.recall_data)) {
1156
- data_args.recall_data = step.recall_data
1157
- }
1158
-
1159
- if (!_.isUndefined(step.recall_type)) {
1160
- data_args.recall_type = step.recall_type
1161
- }
1162
-
1163
- $.ajax({
1164
- url: customify_settings.import_rest_url + 'customify/1.0/import',
1165
- method: 'POST',
1166
- beforeSend: function (xhr) {
1167
- xhr.setRequestHeader('X-WP-Nonce', WP_API_Settings.nonce)
1168
- },
1169
- dataType: 'json',
1170
- contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
1171
- data: data_args
1172
- }).done(function (response) {
1173
- if (!_.isUndefined(response.success) && response.success) {
1174
- var results = response.data
1175
- if (step.type === 'remote') {
1176
- self.process_remote_step(key, results, step)
1177
- }
1178
- }
1179
-
1180
- if (!_.isUndefined(step_key) && !_.isUndefined(response.message)) {
1181
- self.log_action('end', step_key, response.message)
1182
- }
1183
- })
1184
-
1185
- self.methodDeferred.resolve()
1186
- //}, 3450 );
1187
- }
1188
-
1189
- this.setup = function () {
1190
- var self = this
1191
-
1192
- self.queueDeferred = $.Deferred()
1193
-
1194
- // when the previous method returns, resolve this one
1195
- $.when(lastPromise).always(function () {
1196
- self.queueDeferred.resolve()
1197
- })
1198
-
1199
- return self.queueDeferred.promise()
1200
- }
1201
- }
1202
-
1203
  /** HELPERS **/
1204
 
1205
  /**
241
  $(this).trigger('customify:preset-change')
242
  })
243
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  customifyBackgroundJsControl.init()
245
 
246
  // sometimes a php save may be needed
1053
  }
1054
  )(jQuery)
1055
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1056
  /** HELPERS **/
1057
 
1058
  /**
palettes.md DELETED
@@ -1,292 +0,0 @@
1
- # Color Palettes Integration Guide
2
-
3
- Intro cu pasii mari pe care trebuie sa-i faca.
4
-
5
- ## 1. Define your Color Palette
6
-
7
- ### 1.1 Find all the Colors from Your Site
8
- The first step is to scan your site and list all the colors that you can find.
9
-
10
- Next you need to organize and reduce the number of all those colors to three groups:
11
- - **Color**: accents elements that give personality to the composition *(e.g., headlines)*
12
- - **Dark**: used for most of the foreground elements *(e.g., body copy)*
13
- - **Light**: usually used for the element's background, as a contrasted version of the two above
14
-
15
- From over 7-years experience of building sites, we find out that those three categories could fill up most of the decisions that a designer take in setting up their site’s elements.
16
-
17
- ### 1.2 Define the Master Colors
18
- Our current color palettes system supports at most 9 colors (3 accent colors, 3 dark shades and 3 light shades). Below are some guidelines and suggestions about the purpose of each color:
19
-
20
- | Section | Type | Description |
21
- |:--|:--|:--|
22
- | **Color** | Primary | The main Accent color use it to draw the highest attention.|
23
- | | Secondary | An alternative color for Primary |
24
- | | Tertiary | An alternative color for Secondary |
25
- | **Dark** | Primary | Headings Color – usually the darkest shade. |
26
- | | Secondary | Body text color |
27
- | | Tertiary | The lightest shade of dark. |
28
- | **Light** | Primary | Main site background color |
29
- | | Secondary | A complementary color for site background |
30
- | | Tertiary | A *highlighter* background color for various elements (e.g. post-it notes, brush strokes). Should have a greater intensity than the others two light colors. |
31
-
32
-
33
- To make things easier define those colors as constants in your `functions.php` file like so:
34
-
35
- ```php
36
- // Color
37
- define( 'SM_COLOR_PRIMARY', '#FF0000' ); // Use it for Accent Elements
38
- define( 'SM_COLOR_SECONDARY', '#00FF00' );
39
- define( 'SM_COLOR_TERTIARY', '#0000FF' );
40
-
41
- // Dark
42
- define( 'SM_DARK_PRIMARY', '#111111' );
43
- define( 'SM_DARK_SECONDARY', '#222222' ); // Use it for Body Text
44
- define( 'SM_DARK_TERTIARY', '#333333' );
45
-
46
- // Light
47
- define( 'SM_LIGHT_PRIMARY', '#EEEEEE' );
48
- define( 'SM_LIGHT_SECONDARY', '#DDDDDD' );
49
- define( 'SM_LIGHT_TERTIARY', '#CCCCCC' );
50
- ```
51
-
52
- You may want to keep all nine definitions even if you don't need them. If you’re not using one constant in the config you can either copy-paste the value of another one in the same group or event alter it's value a little.
53
-
54
- Having all these constants defined will come in handy when using palettes variations and also in defining the default palette for the theme.
55
-
56
- Limit yourself to using as few colors as possible
57
-
58
- Try to use as few colors as possible in your configuration.
59
-
60
- ## 2. Create a Baseline for Color Customizations
61
- To create a baseline for color customizations, we need to set up the system for being capable of changing any color from our website. We will do that by mapping each site element (e.g., page title) to a color option.
62
-
63
-
64
-
65
- ### 2.1 Scan all Your Site Elements for Color Rules
66
-
67
- The first step is to scan throughout all the stylesheet files (CSS) and list all the elements that have a color-based rule declaration(e.g., color, background, border).
68
-
69
- Then we will **group** all those CSS rules and place them under a limited number of color fields. To keep things consistent we suggest to start with the following structure and adjust to the theme needs:
70
-
71
- | Section | Fields | Description |
72
- |:--|:--|:--|
73
- | **Header** | Header Text Color |
74
- | | Navigation Links Color |
75
- | | Links Active Color |
76
- | | Header Background |
77
- | **Main Content** | Page Title Color |
78
- | | Body Text Color |
79
- | | Body Link Color |
80
- | | Body Link Active Color |
81
- | ↳ *Headings Color* | Heading 1 |
82
- | | Heading 2 |
83
- | | Heading 3 |
84
- | | Heading 4 |
85
- | | Heading 5 |
86
- | | Heading 6 |
87
- | ↳ *Backgrounds* | Content Background Color |
88
- | **Buttons** | Text Color |
89
- | | Background Color |
90
- | **Footer** | Footer Text Color |
91
- | | Footer Links Color |
92
- | | Footer Headings Color |
93
- | | Footer Background |
94
- | **Miscellaneous** | Other Fields |
95
-
96
- ### 2.2 The Structure Of a Color Field
97
- Details:
98
- ```php
99
- function make_this_function_name_unique( $config ) {
100
-
101
- // usually the sections key will be here, but a check won't hurt
102
- if ( ! isset($config['sections']) ) {
103
- $config['sections'] = array();
104
- }
105
-
106
- // this means that we add a new entry named "theme_added_settings" in the sections area
107
- $config['sections']['theme_added_settings'] = array(
108
- 'title' => 'Section added dynamically',
109
- 'settings' => array(
110
-
111
- // this is the field id and it must be unique
112
- 'field_example' => array(
113
- 'type' => 'color', // there is a list of types below
114
- 'label' => 'Body color', // the label is optional but is nice to have one
115
- 'css' => array(
116
-
117
- // the CSS key is the one which controls the output of this field
118
- array(
119
- // a CSS selector
120
- 'selector' => '#logo',
121
- // the CSS property which should be affected by this field
122
- 'property' => 'background-color',
123
- )
124
-
125
- // repeat this as long as you need
126
- array(
127
- 'selector' => 'body',
128
- 'property' => 'color',
129
- )
130
- )
131
- )
132
- )
133
- );
134
-
135
- // when working with filters always return filtered value
136
- return $config;
137
- }
138
- add_filter('customify_filter_fields', 'make_this_function_name_unique' );
139
- ```
140
- ### 2.3 Add Color Controls to all Your Site Elements
141
- Add the code snippet below to `functions.php` in order to..
142
- [un snippet si cu sectiunile de mai sus in care doar sa completeze reguli de CSS?]
143
- ```php
144
-
145
- ```
146
-
147
-
148
- ## 3. Add Style Manager section with master controls
149
- ### 3.1. Add Style Manager support to the theme
150
- In your function.php file add the following line of code to add support for the Style Manager section.
151
- This is usually done
152
- ```php
153
- if ( ! function_exists( 'themename_setup' ) ) :
154
- function listable_setup() {
155
- ...
156
- add_theme_support('customizer_style_manager');
157
- ...
158
- endif;
159
-
160
- add_action( 'after_setup_theme', 'themename_setup' );
161
- ```
162
-
163
- ### 3.2. Add a function to filter the Style Manager config
164
- ```php
165
- /**
166
- * Add the Style Manager cross-theme Customizer section.
167
- *
168
- * @param array $options
169
- *
170
- * @return array
171
- */
172
- function pixelgrade_add_customify_style_manager_section( $options ) {
173
- // If the theme hasn't declared support for style manager, bail.
174
- if ( ! current_theme_supports( 'customizer_style_manager' ) ) {
175
- return $options;
176
- }
177
-
178
- if ( ! isset( $options['sections']['style_manager_section'] ) ) {
179
- $options['sections']['style_manager_section'] = array();
180
- }
181
- }
182
- ```
183
- ```php
184
- add_filter( 'customify_filter_fields', 'pixelgrade_add_customify_style_manager_section', 12, 1 );
185
- ```
186
-
187
- ### 3.3. Extend Style Manager fields with proper defaults and connected fields
188
- ```php
189
- // The section might be already defined, thus we merge, not replace the entire section config.
190
- $options['sections']['style_manager_section'] = array_replace_recursive( $options['sections']['style_manager_section'], array(
191
- 'options' => array(
192
- 'sm_color_primary' => array(
193
- 'default' => SM_COLOR_PRIMARY,
194
- 'connected_fields' => array(
195
- 'accent_color',
196
- ),
197
- ),
198
- ...
199
- ),
200
- );
201
-
202
- ```
203
-
204
- ### 3.4. Create a default Color Palette for the current Theme
205
- #### 3.4.1 Upload an image to Pixelgrade Cloud in order to use it as a mood background image for this Palette
206
- #### 3.4.2 Write the proper configuration and use the `customify_get_color_palettes` hook to add it to the main list
207
- Color values listed in the options attribute should match the ones that we've just set for the options in the Style Manager section (or rather the other way around)
208
- ```php
209
- function themename_add_default_color_palette( $color_palettes ) {
210
-
211
- $color_palettes = array_merge(array(
212
- 'default' => array(
213
- 'label' => 'Default',
214
- 'preview' => array(
215
- 'background_image_url' => '',
216
- ),
217
- 'options' => array(
218
- 'sm_color_primary' => '#FF4D58',
219
- 'sm_color_secondary' => '#F53C48',
220
- 'sm_color_tertiary' => '#FF4D58',
221
- 'sm_dark_primary' => '#484848',
222
- 'sm_dark_secondary' => '#2F2929',
223
- 'sm_dark_tertiary' => '#919191',
224
- 'sm_light_primary' => '#FFFFFF',
225
- 'sm_light_secondary' => '#F9F9F9',
226
- 'sm_light_tertiary' => '#F9F9F9',
227
- ),
228
- ),
229
- ), $color_palettes);
230
-
231
- return $color_palettes;
232
- }
233
- add_filter( 'customify_get_color_palettes', 'themename_add_default_color_palette' );
234
- ```
235
- darkest shades should go in dark_primary
236
- body text color should go in dark_secondary
237
-
238
- Pairs of options that control the foreground / background for the same element should not stay in the same group (color, dark or light). One should stay in one of the light groups, and the other one can stay either in the color or the dark groups.
239
-
240
- ---
241
- ## Tips and Tricks / FAQs
242
- ### What if I have more colors?
243
- It happens a lot for developers to write unneeded code, or overly specific CSS selectors. This is a good time to give your code a health check.
244
-
245
- Things that have a big chance of needed to be improved in your code.
246
-
247
- 1. Use `opacity` instead of using a new color value when possible.
248
- ```css
249
- .container {
250
- color: #222;
251
- }
252
-
253
- .container-child {
254
- /* color: #444 */
255
- opacity: 0.9;
256
- }
257
- ```
258
-
259
- 2. Use the `currentColor` value for properties like `border`, `outline`, `box-shadow`, `placeholder` and other properties or pseudo-elements.
260
- ```css
261
- .element {
262
- color: #222;
263
- /* box-shadow: #222 0 1em 1em; */
264
- box-shadow: currentColor 0 1em 1em;
265
- }
266
-
267
- .element::after {
268
- content: "";
269
- /* border: 2px solid #222; */
270
- border: 2px solid;
271
- }
272
- ```
273
- Use `color: inherit` when possible
274
- ```
275
- a {
276
- color: #f00;
277
- }
278
-
279
- .container {
280
- color: #222;
281
- }
282
-
283
- .container a {
284
- /* color: #222; */
285
- color: inherit;
286
- text-decoration: underline;
287
- }
288
-
289
- ```
290
-
291
- **Make use of Customify's callback filters**
292
- If your theme uses more than 3 dark or white shades, you can always make use of the callback filters feature that Customify uses.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: pixelgrade, euthelup, babbardel, vlad.olaru, raduconstantin, razvanonofrei
3
  Tags: customizer, css, editor, gutenberg, live, preview, customizer
4
  Requires at least: 4.9.9
5
- Tested up to: 5.2.0
6
  Stable tag: 2.3.5.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -45,6 +45,11 @@ With [Customify](https://github.com/pixelgrade/customify), developers can easily
45
 
46
  == Changelog ==
47
 
 
 
 
 
 
48
  = 2.3.5.1 =
49
  * Minor configuration fix.
50
 
2
  Contributors: pixelgrade, euthelup, babbardel, vlad.olaru, raduconstantin, razvanonofrei
3
  Tags: customizer, css, editor, gutenberg, live, preview, customizer
4
  Requires at least: 4.9.9
5
+ Tested up to: 5.2.2
6
  Stable tag: 2.3.5.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
45
 
46
  == Changelog ==
47
 
48
+ = 2.4.0 =
49
+ * Big performance enhancements related to how customization settings and configurations get loaded.
50
+ * Fixed a nasty regression that caused customization settings saved in a option to not be loaded, causing styles to be missing.
51
+ * Pretty important code refactoring and cleanup to make things more predictable and stable.
52
+
53
  = 2.3.5.1 =
54
  * Minor configuration fix.
55