FooGallery – Image Gallery WordPress Plugin - Version 1.4.25

Version Description

  • New : Retina support for albums!
  • New : Default crop position setting for attachments
  • New : Speed up gallery previews in wp-admin
  • New : Caption support for Responsive Lightbox by dFactory
  • Fix : Extension loading issues on certain installs
  • Fix : Shortcode copy-to-clipboard metabox works again
  • Fix : Bugs fixes for paging, filtering, FooBox and more
  • Fix : Ensure jquery-ui-sortable is loaded on edit page for some installs
  • Fix : All-In-One Stack Album layout bugs
  • Fix : Reworked extensions listing page logic
  • Update : FooGallery client side 1.0.23
  • Update : Freemius SDK 1.2.4
Download this release

Release Info

Developer bradvin
Plugin Icon 128x128 FooGallery – Image Gallery WordPress Plugin
Version 1.4.25
Comparing to
See all releases

Code changes from version 1.4.15 to 1.4.25

Files changed (167) hide show
  1. README.md +6 -358
  2. README.txt +23 -8
  3. css/admin-foogallery.css +33 -1
  4. extensions/albums/admin/class-metaboxes.php +2 -2
  5. extensions/albums/album-default.php +2 -0
  6. extensions/albums/album-stack.php +7 -4
  7. extensions/albums/js/album-stack.js +54 -47
  8. extensions/default-templates/default/class-default-gallery-template.php +1 -0
  9. extensions/default-templates/justified/class-justified-gallery-template.php +1 -0
  10. extensions/default-templates/masonry/class-masonry-gallery-template.php +1 -0
  11. extensions/default-templates/shared/css/foogallery.css +2 -2
  12. extensions/default-templates/shared/css/foogallery.min.css +1 -1
  13. extensions/default-templates/shared/js/foogallery.js +789 -538
  14. extensions/default-templates/shared/js/foogallery.min.js +3 -3
  15. extensions/default-templates/simple-portfolio/class-simple-portfolio-gallery-template.php +1 -0
  16. extensions/media-categories/class-media-categories-extension.php +0 -237
  17. foogallery.php +46 -6
  18. freemius/.codeclimate.yml +19 -0
  19. freemius/.github/ISSUE_TEMPLATE.md +29 -0
  20. freemius/.travis.yml +11 -0
  21. freemius/LICENSE.txt +673 -673
  22. freemius/assets/css/admin/account.css +1 -1
  23. freemius/assets/css/admin/affiliation.css +1 -1
  24. freemius/assets/css/admin/common.css +2 -2
  25. freemius/assets/css/admin/connect.css +1 -1
  26. freemius/assets/css/admin/index.php +3 -0
  27. freemius/assets/css/customizer.css +1 -1
  28. freemius/assets/css/index.php +3 -0
  29. freemius/assets/img/foogallery.png +0 -0
  30. freemius/assets/img/index.php +3 -0
  31. freemius/assets/js/index.php +3 -0
  32. freemius/assets/js/nojquery.ba-postmessage.js +139 -139
  33. freemius/assets/js/nojquery.ba-postmessage.min.js +11 -11
  34. freemius/assets/js/postmessage.js +134 -134
  35. freemius/assets/scss/_mixins.scss +269 -269
  36. freemius/assets/scss/admin/_themes.scss +20 -20
  37. freemius/assets/scss/admin/account.scss +255 -255
  38. freemius/assets/scss/admin/add-ons.scss +448 -448
  39. freemius/assets/scss/admin/affiliation.scss +96 -96
  40. freemius/assets/scss/admin/index.php +3 -0
  41. freemius/assets/scss/customizer.scss +124 -124
  42. freemius/assets/scss/index.php +3 -0
  43. freemius/composer.json +10 -10
  44. freemius/config.php +3 -0
  45. freemius/gulpfile.js +32 -4
  46. freemius/includes/class-freemius-abstract.php +596 -596
  47. freemius/includes/class-freemius.php +572 -330
  48. freemius/includes/class-fs-logger.php +687 -687
  49. freemius/includes/class-fs-plugin-updater.php +12 -14
  50. freemius/includes/class-fs-security.php +85 -85
  51. freemius/includes/customizer/class-fs-customizer-support-section.php +3 -3
  52. freemius/includes/customizer/class-fs-customizer-upsell-control.php +2 -2
  53. freemius/includes/customizer/index.php +3 -0
  54. freemius/includes/debug/class-fs-debug-bar-panel.php +1 -1
  55. freemius/includes/debug/debug-bar-start.php +2 -2
  56. freemius/includes/entities/class-fs-affiliate-terms.php +127 -127
  57. freemius/includes/entities/class-fs-affiliate.php +83 -83
  58. freemius/includes/entities/class-fs-billing.php +94 -94
  59. freemius/includes/entities/class-fs-entity.php +148 -148
  60. freemius/includes/entities/class-fs-payment.php +93 -93
  61. freemius/includes/entities/class-fs-plugin-info.php +33 -33
  62. freemius/includes/entities/class-fs-plugin-license.php +224 -224
  63. freemius/includes/entities/class-fs-plugin-plan.php +144 -144
  64. freemius/includes/entities/class-fs-plugin-tag.php +23 -23
  65. freemius/includes/entities/class-fs-plugin.php +116 -116
  66. freemius/includes/entities/class-fs-pricing.php +140 -140
  67. freemius/includes/entities/class-fs-scope-entity.php +28 -28
  68. freemius/includes/entities/class-fs-site.php +147 -147
  69. freemius/includes/entities/class-fs-subscription.php +124 -124
  70. freemius/includes/entities/class-fs-user.php +61 -61
  71. freemius/includes/fs-core-functions.php +1097 -665
  72. freemius/includes/fs-essential-functions.php +3 -0
  73. freemius/includes/fs-plugin-info-dialog.php +98 -56
  74. freemius/includes/i18n.php +3 -1
  75. freemius/includes/l10n.php +0 -220
  76. freemius/includes/managers/class-fs-admin-menu-manager.php +849 -849
  77. freemius/includes/managers/class-fs-cache-manager.php +280 -280
  78. freemius/includes/managers/class-fs-key-value-storage.php +327 -327
  79. freemius/includes/managers/class-fs-license-manager.php +103 -103
  80. freemius/includes/managers/class-fs-option-manager.php +352 -352
  81. freemius/includes/managers/class-fs-plan-manager.php +161 -161
  82. freemius/includes/managers/class-fs-plugin-manager.php +219 -219
  83. freemius/includes/sdk/FreemiusWordPress.php +15 -14
  84. freemius/includes/sdk/LICENSE.txt +340 -340
  85. freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +47 -47
  86. freemius/languages/freemius-da_DK.po +1826 -1826
  87. freemius/languages/freemius-en.mo +0 -0
  88. freemius/languages/freemius-en.po +1520 -1368
  89. freemius/languages/freemius-es_ES.mo +0 -0
  90. freemius/languages/freemius-es_ES.po +2035 -0
  91. freemius/languages/freemius-he.mo +0 -0
  92. freemius/languages/freemius-he_IL.mo +0 -0
  93. freemius/languages/{freemius-he.po → freemius-he_IL.po} +1588 -1379
  94. freemius/languages/freemius-it_IT.mo +0 -0
  95. freemius/languages/freemius-it_IT.po +1579 -1370
  96. freemius/languages/freemius-ja_JP.mo +0 -0
  97. freemius/languages/freemius-ja_JP.po +1580 -1371
  98. freemius/languages/freemius.pot +1097 -945
  99. freemius/package.json +11 -24
  100. freemius/require.php +44 -44
  101. freemius/start.php +42 -19
  102. freemius/templates/account.php +132 -91
  103. freemius/templates/account/billing.php +21 -16
  104. freemius/templates/account/index.php +2 -2
  105. freemius/templates/account/payments.php +6 -6
  106. freemius/templates/add-ons.php +9 -9
  107. freemius/templates/add-trial-to-pricing.php +30 -30
  108. freemius/templates/admin-notice.php +3 -1
  109. freemius/templates/all-admin-notice.php +38 -38
  110. freemius/templates/auto-installation.php +19 -15
  111. freemius/templates/checkout-legacy.php +242 -242
  112. freemius/templates/checkout.php +1 -1
  113. freemius/templates/connect.php +46 -41
  114. freemius/templates/contact.php +1 -1
  115. freemius/templates/debug.php +94 -85
  116. freemius/templates/debug/api-calls.php +14 -12
  117. freemius/templates/debug/logger.php +8 -8
  118. freemius/templates/debug/plugins-themes-sync.php +25 -17
  119. freemius/templates/debug/scheduled-crons.php +29 -21
  120. freemius/templates/email.php +48 -48
  121. freemius/templates/firewall-issues-js.php +58 -58
  122. freemius/templates/forms/affiliation.php +54 -47
  123. freemius/templates/forms/deactivation/contact.php +5 -2
  124. freemius/templates/forms/deactivation/form.php +28 -23
  125. freemius/templates/forms/deactivation/retry-skip.php +4 -4
  126. freemius/templates/forms/license-activation.php +11 -9
  127. freemius/templates/forms/optout.php +16 -15
  128. freemius/templates/forms/resend-key.php +7 -7
  129. freemius/templates/forms/trial-start.php +9 -7
  130. freemius/templates/js/index.php +2 -2
  131. freemius/templates/js/jquery.content-change.php +46 -46
  132. freemius/templates/js/style-premium-theme.php +1 -1
  133. freemius/templates/plugin-icon.php +129 -129
  134. freemius/templates/plugin-info/description.php +2 -2
  135. freemius/templates/plugin-info/features.php +5 -5
  136. freemius/templates/plugin-info/screenshots.php +1 -1
  137. freemius/templates/powered-by.php +57 -57
  138. freemius/templates/pricing.php +1 -1
  139. freemius/templates/secure-https-header.php +2 -1
  140. freemius/templates/sticky-admin-notice-js.php +38 -38
  141. freemius/templates/tabs-capture-js.php +62 -62
  142. freemius/templates/tabs.php +170 -171
  143. includes/WPThumb/wpthumb.crop-from-position.php +3 -3
  144. includes/WPThumb/wpthumb.php +5 -1
  145. includes/admin/class-admin.php +0 -1
  146. includes/admin/class-attachment-fields.php +17 -3
  147. includes/admin/class-gallery-metabox-settings.php +1 -1
  148. includes/admin/class-gallery-metaboxes.php +6 -3
  149. includes/admin/view-extensions.php +34 -20
  150. includes/class-foogallery-default-crop-position.php +80 -0
  151. includes/class-foogallery-paging.php +2 -2
  152. includes/{admin/class-autoptimize-support.php → compatibility/class-autoptimize-compatibility.php} +8 -5
  153. includes/{class-foobox-support.php → compatibility/class-foobox-compatibility.php} +2 -2
  154. includes/compatibility/class-foogallery-compatibility.php +24 -0
  155. includes/{class-polylang-compatibility.php → compatibility/class-polylang-compatibility.php} +1 -1
  156. includes/{class-responsive-lightbox-dfactory-support.php → compatibility/class-responsive-lightbox-dfactory-compatibility.php} +14 -7
  157. includes/{class-wp-rocket-support.php → compatibility/class-wprocket-compatibility.php} +2 -2
  158. includes/extensions/class-extensions-api.php +36 -8
  159. includes/extensions/class-extensions-loader.php +14 -1
  160. includes/foopluginbase/classes/class-foo-plugin-settings.php +6 -4
  161. includes/includes.php +3 -6
  162. js/admin-foogallery-attachment-autosave.js +70 -0
  163. js/admin-foogallery.js +7 -1
  164. js/foogallery.admin.min.js +1 -1
  165. lib/selectize/foogallery.selectize.js +115 -0
  166. lib/selectize/selectize.css +373 -0
  167. lib/selectize/selectize.min.js +3 -0
README.md CHANGED
@@ -1,363 +1,11 @@
1
- ![Plugin Banner](https://s3.amazonaws.com/foogallery/banner-772x250.jpg)
2
3
- [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/fooplugins/foogallery/badges/quality-score.png?b=develop)](https://scrutinizer-ci.com/g/fooplugins/foogallery/?branch=develop)
4
- # FooGallery - Image Gallery WordPress Plugin #
5
- **Contributors:** bradvin, steveush, fooplugins
6
-
7
- **Donate link:** http://fooplugins.com
8
-
9
- **Tags:** gallery, image gallery, photo gallery, responsive, album, media gallery, masonry gallery, portfolio, justified image gallery, video gallery, photography, photographer, retina
10
-
11
- **Requires at least:** 3.9
12
-
13
- **Tested up to:** 4.8.3
14
-
15
- **Stable tag:** trunk
16
-
17
- **License:** GPLv2 or later
18
-
19
- **License URI:** http://www.gnu.org/licenses/gpl-2.0.html
20
-
21
- FooGallery is the best image gallery plugin for WordPress. Why? Stunning gallery layouts, responsive, retina-ready, lightning fast, easy to use.
22
-
23
- ## Description ##
24
-
25
- FooGallery is the best image gallery plugin for WordPress. Why? Stunning gallery layouts, responsive, retina-ready, lightning fast, easy to use. Built to be highly configurable and extensible for developers or freelancers.
26
-
27
- [View the FooGallery Homepage & DEMO](http://foo.gallery/)
28
-
29
- **Major changes in 1.4.1!**
30
-
31
- There have been major updates to the gallery templates in v1.4.1. If you have updated, please test your galleries.
32
-
33
- **Retina Support**
34
-
35
- FooGallery now comes with built-in support for higher quality thumbnails on retina-enabled displays. No more blurry thumbnails, just crisp thumbnails that look amazing on all devices.
36
-
37
- **Video Support**
38
-
39
- FooGallery now supports the creation of video galleries with the [FooVideo premium extension](http://fooplugins.com/plugins/foovideo/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)! Create galleries with both images and videos mixed!
40
-
41
- **Albums Built In**
42
-
43
- Albums are now built in as an extension. Simply head over to the extensions page and activate the albums extension. A new menu item will appear that allows you to add albums just as easily as galleries.
44
-
45
- **Built For Developers**
46
-
47
- FooGallery was designed to be the most developer-friendly gallery plugin available for WordPress. It was also built on top of a solid extension framework, which means different functionality is separated out into different areas in the codebase. It also means the core plugin is lightweight, but still allowing for the most flexibility.
48
-
49
- **Features**
50
-
51
- * Retina thumbnail support
52
- * Add videos to galleries (via the [FooVideo premium extension](http://fooplugins.com/plugins/foovideo/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo))
53
- * Albums built-in! (Activate the albums extension)
54
- * Gallery custom post type
55
- * Use built-in media library to manage images
56
- * Drag n Drop reordering of images and galleries
57
- * Built-in gallery templates
58
- * Built-in support for FooBox
59
- * Built-in Extensions Store
60
- * Built on an extension framework
61
- * Custom CSS for both galleries and albums
62
- * Copy to clipboard shortcodes
63
- * Visual shortcodes in rich text editor
64
- * Gallery picker to insert shortcode
65
- * Page usage metabox with one-click gallery page creation
66
- * NextGen importer tool (albums and galleries)
67
- * Multisite Support
68
- * plus many, many more
69
-
70
- **Gallery Demos**
71
-
72
- * Responsive Image Gallery - [demo](http://foo.gallery/demos/responsive-image-gallery/)
73
- * FooGrid Image Gallery - [light demo](http://foo.gallery/demos/foogrid-light/) - [dark demo](http://foo.gallery/demos/foogrid-dark/)
74
- * Image Viewer Gallery - [light demo](http://foo.gallery/demos/image-viewer-gallery/) - [dark demo](http://foo.gallery/demos/image-viewer-gallery-dark/)
75
- * Masonry Gallery - [demo](http://foo.gallery/demos/masonry-image-gallery/)
76
- * Simple Portfolio - [demo](http://foo.gallery/demos/simple-portfolio/)
77
- * Justified Gallery ([http://miromannino.github.io/Justified-Gallery](http://miromannino.github.io/Justified-Gallery/)) - [demo](http://foo.gallery/demos/justified-gallery/)
78
- * Single Thumbnail Gallery - [demo](http://foo.gallery/demos/single-thumbnail-gallery/)
79
- * Polaroid Gallery - [demo](http://foo.gallery/demos/polaroid-image-gallery/)
80
- * Cube Gallery - [demo](http://foo.gallery/demos/cube-gallery/) - [Buy Now!](http://fooplugins.com/plugins/cube-gallery-template/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
81
- * Mixed (Images + Videos) - [demo](http://foo.gallery/demos/mixed/)
82
-
83
- **Caption Demos**
84
-
85
- * Simple Hover Captions - [demo](http://foo.gallery/demos/captions-simple-hover/)
86
- * Always Visible Captions - [demo](http://foo.gallery/demos/responsive-image-gallery-captions/)
87
- * Drop Captions - [demo](http://foo.gallery/demos/captions-drop/)
88
- * Fade Captions - [demo](http://foo.gallery/demos/captions-fade/)
89
- * Push Captions - [demo](http://foo.gallery/demos/captions-push/)
90
-
91
- **Album Demos**
92
-
93
- * Responsive Album Layout - [demo](http://foo.gallery/demos/responsive-album-layout/)
94
- * All-in-one Stack Album - [demo](http://foo.gallery/demos/all-in-one-stack-album/)
95
-
96
- **Videos Demos**
97
-
98
- * Vertical Video Slider - [demo](http://foo.gallery/demos/video-slider-vertical/) - [full-width demo](http://foo.gallery/demos/video-slider-vertical-full-width/)
99
- * Horizontal Video Slider - [demo](http://foo.gallery/demos/video-slider-horizontal/) - [custom colors](http://foo.gallery/demos/video-slider-custom-theme/)
100
-
101
- **Extensions**
102
-
103
- * [FooVideo](http://fooplugins.com/plugins/foovideo/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
104
- * Albums (bundled)
105
- * Default Gallery Templates (bundled)
106
- * NextGen Gallery and Album Importer (bundled)
107
- * [FooGrid Gallery](http://fooplugins.com/plugins/foogrid/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
108
- * [Cube Gallery](http://fooplugins.com/plugins/cube-gallery-template/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
109
- * [Custom Branding](http://fooplugins.com/plugins/foogallery-branding/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
110
- * [FooBox PRO Lightbox](http://fooplugins.com/plugins/foobox/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
111
- * [FooBox FREE Lightbox](http://wordpress.org/plugins/foobox-image-lightbox)
112
- * [Owl Carousel Template](http://wordpress.org/plugins/foogallery-owl-carousel-template/)
113
- * [ZOOM Template](http://wordpress.org/plugins/foogallery-zoom-template/)
114
- * [Thirsty Affiliates](http://wordpress.org/plugins/thirstyaffiliates-for-foogallery-extension/)
115
- * [Polaroid Template](https://github.com/fooplugins/foogallery-polaroid-template)
116
- * [Use Media Menu](https://github.com/fooplugins/foogallery-media-menu)
117
- * Build your own!!!
118
-
119
- **Documentation**
120
-
121
- * [FooGallery 101](http://docs.fooplugins.com/foogallery/foogallery-101/)
122
- * [Developer 101](http://docs.fooplugins.com/foogallery/foogallery-developers-101/)
123
- * [Actions and Filters](http://docs.fooplugins.com/foogallery/actions-filters/)
124
-
125
- **Contribute**
126
-
127
- FooGallery is hosted on [GitHub](https://github.com/fooplugins/foogallery). If you find a bug, please [create an issue](https://github.com/fooplugins/foogallery/issues).
128
-
129
- ## Installation ##
130
-
131
- 1. Upload `foogallery` folder to the `/wp-content/plugins/` directory
132
- 2. Activate the plugin through the 'Plugins' menu in WordPress
133
- 3. You will be redirected to the FooGallery Help page to get your started
134
-
135
- ## Frequently Asked Questions ##
136
-
137
- ### Why are my thumbnails so blurry? ###
138
-
139
- Have you enabled retina support for your galleries? Displays with retina support can show better quality thumbnails when retina support is enabled. To enable retina support, edit the gallery and locate the Retina Support metabox.
140
-
141
- ### Can I add videos to my galleries? ###
142
-
143
- Yes, you need to use the [FooVideo premium extension](http://fooplugins.com/plugins/foovideo/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
144
-
145
- ### How do I get albums working? ###
146
-
147
- Simply go to the FooGallery extensions page and activate the Albums extension. If you do not see a button to activate the albums extension, reload the extensions list by clicking the reload button.
148
-
149
- ### Can I build an extension? ###
150
-
151
- Hell, yes! Check out our [developer page](http://foo.gallery/developers/)
152
153
- ## Screenshots ##
154
155
- [View screenshots](https://wordpress.org/plugins/foogallery/screenshots/)
156
157
- ## Upgrade Notice ##
158
159
- Update now to support FooVideo and many other improvements!
160
-
161
- ## Changelog ##
162
-
163
- ### 1.4.5 ###
164
-
165
- * Fix : Lazy loading - scrolling galleries in certain scenarios were not loading thumbs
166
- * Fix : Galleries that were hidden on page load were not displaying correctly when shown
167
- * Fix : Default gallery settings were not being applied to new galleries
168
- * New : shortcode arguments applied to gallery for common fields
169
- * New : HTML caching is disabled by default now!
170
- * Updated to latest client side JS and CSS
171
-
172
- ### 1.4.4 ###
173
-
174
- * Fix : upgrade was calling underfined function
175
-
176
- ### 1.4.3 ###
177
-
178
- * Fix : Justify gallery template issues
179
- * Fix : Masonry gallery template issues
180
- * Fix : Caption description not hidden when supposed to
181
- * Fix : Complete rework of thumbnail dimension logic!
182
- * Fix : Redirection bug on activation
183
- * Fix : Added checks for galleries causing PHP warnings
184
- * New : Last Row setting in Justify gallery template
185
- * New : Alignment setting in Simple Portfolio gallery template
186
- * New : Added more checks after load to ensure gallery layout is correct
187
- * Updated to Freemius SDK 1.2.2.10
188
- * Updated to latest client side JS and CSS
189
-
190
- ### 1.3.28 ###
191
-
192
- * Complete rewrite of the built-in gallery templates
193
- * New : lazy loading
194
- * New : simple pagination
195
- * New : Live Previews when editing a gallery
196
- * 260+ updates, changes and bug fixes
197
-
198
- ### 1.3.8 ###
199
-
200
- * New : Built in support for FooBox, fixing a lot of issues where FooBox option is not available
201
- * Fix : More reliable extension active status on extensions listing
202
- * Fix : More obvious wording for 3rd party plugins when they are not installed
203
-
204
- ### 1.3.7 ###
205
-
206
- * Fix : Activation redirect bug showing "Sorry, you are not allowed to access this page."
207
-
208
- ### 1.3.6 ###
209
-
210
- * New : Freemius integration!
211
- * New : Added support for the Responsive Lightbox by dFactory
212
- * New : New custom class field for an attachment
213
- * New : Added more system info for better debugging when there are server issues
214
- * Fix : Visual editor FooGallery edit button
215
- * Fix : Image Viewer hover effect none now works as expected
216
- * Fix : Disable HTML caching for randomly ordered galleries
217
-
218
- ### 1.2.20 ###
219
-
220
- * New : Force Use Original thumb setting on gallery edit page
221
- * Fix : PHP warning from thumbnail class since 1.2.19
222
-
223
- ### 1.2.19 ###
224
-
225
- * New : Gallery output caching! Saves database requests improving load time
226
- * New : Gallery usage column in admin gallery listing
227
- * New : Better support for animated gifs
228
- * New : Hover icons retina support
229
- * New : Uninstall button on settings
230
- * New : Save thumb dimensions per attachment. (needed in future versions)
231
- * Fix : Extensions refactor and many issues resolved
232
- * Fix : Better retina support for all templates
233
- * Fix : Colorize / Greyscale CSS filters
234
- * Fix : Even better wpthumb compatibility
235
-
236
- ### 1.2.18 ###
237
-
238
- * Fix : Handle no settings in retina metabox
239
-
240
- ### 1.2.17 ###
241
-
242
- * New : Retina support - metabox per gallery and default settings
243
- * New : Attachment datasources - backend changes for how images are used in a gallery. (This will allow for new external sources in the future)
244
- * New : Caption color settings in Simple portfolio gallery template
245
- * New : Updated to latest Justified Gallery
246
- * Fix : Better wpthumb compatibility
247
-
248
- ### 1.2.16 ###
249
-
250
- * Fix : Yoast SEO Sitemaps fatal error with deleted galleries
251
- * Fix : Updating pages with deleted galleries throws php warnings
252
-
253
- ### 1.2.15 ###
254
-
255
- * Fix : Album admin CSS issues in WP 4.6
256
- * Fix : Masonry layout issues in WP 4.6
257
- * Fix : Media attachment fields not updating
258
- * Fix : Better support for IE10
259
- * New : Thumbnail generation test admin notice and settings
260
-
261
- ### 1.2.13 ###
262
-
263
- * Fix : Shortcode replacing content in visual editor
264
- * Fix : Gallery hover effect of None being ignored
265
- * New : ImageViewer language settings for 'Prev', 'Next' & 'of'
266
- * New : Setting to use original thumbnails if available
267
-
268
- ### 1.2.12 ###
269
-
270
- * Fix : Simple Portfolio missing captions fix
271
-
272
- ### 1.2.11 ###
273
-
274
- * Fix : Simple Portfolio undefined function fix
275
-
276
- ### 1.2.10 ###
277
-
278
- * New : support for multiple admin JS and CSS assets for gallery templates
279
- * New : Added setting to choose Caption Description source
280
- * New : Crop position can be chosen for attachments
281
- * New : Albums gallery details modal for setting a gallery URL
282
- * New : Better shortcode preview in editor
283
- * New : Editor button now supported if multiple editors exist
284
- * Fix : Better No-Link support for gallery templates
285
- * Fix : Compatible with Unyson plugin
286
- * Fix : Compatible with Advanced Custom Fields
287
- * Fix : Simple Portfolio fixes and tweaks
288
- * Fix : ImageViewer fixes and better browser compatibility
289
- * Fix : Changed assets enqueue version to rather use extension version
290
- * Fix : Album URL fix for permalinks with no trailing slashes
291
-
292
- ### 1.2.9 ###
293
- * New : Added Image Viewer gallery template
294
- * New : Caption support for default template
295
- * New : Yoast SEO gallery image support!
296
- * New : Responsive options for Masonry gallery
297
- * New : change gallery URL slug for albums
298
- * New : setting to turn off loading animation in default gallery
299
- * New : French translation
300
- * Fix : Support for WP 4.4
301
- * Fix : All templates - moved all jQuery ready events to vanilla JS
302
- * Fix : Many gallery template tweaks
303
- * Fix : allow no default to be chosen in settings
304
-
305
- ### 1.2.8 ###
306
- * Works now with Polylang translation plugin
307
- * CSS Updates & enhancements to all gallery templates
308
- * Password protected galleries now work as expected
309
- * Ability to hide WYSIWYG editor button
310
- * Updated WPThumb
311
- * Multiple bug fixes and improvements
312
-
313
- ### 1.2.7 ###
314
- * Bug fixes for 1.2.6 release
315
- * Added 2 new settings to Justified Gallery template (maxRowHeight + Caption Source)
316
-
317
- ### 1.2.6 ###
318
- * CSS load optimizations
319
- * Updates and tweaks on all built-in gallery templates
320
- * More robust extension loading
321
- * More robust upgrades to FooBox PRO
322
- * Improved copy-to-clipboard
323
- * Added more hover effects
324
- * Support for FooVideo
325
-
326
- ### 1.2.5 ###
327
- * Fix for extensions being empty
328
- * Added support for Multi-site
329
- * Added esc_url to all places where url is rendered
330
- * Updated to latest Justified Gallery v3.5.4
331
-
332
- ### 1.2.4 ###
333
- * Many album template updates, enhancements and fixes
334
- * Many gallery template tweaks and fixes
335
- * Sort order settings for galleries and albums
336
- * Added new Single Thumbnail Gallery template
337
-
338
- ### 1.2.1 ###
339
- * Added setting to choose default gallery to copy settings from
340
- * Fixed bug #45 - gallery fields not showing onload
341
- * replaced minicolors with spectrum colorpicker
342
- * Allow gallery fields to have a suffix
343
- * Added function to render galleries "foogallery_render_gallery( $gallery_id )"
344
-
345
- ### 1.2.0 ###
346
- * Added albums extension
347
- * Added custom CSS metaboxes
348
- * Updated Nextgen importer
349
- * Fixed many bugs
350
-
351
- ### 1.1.8.2 ###
352
- * Fixed "edit gallery" CSS with WP 4.0
353
-
354
- ### 1.1.8.1 ###
355
- * Fixed "insert gallery" CSS with WP 4.0
356
-
357
- ### 1.1.8 ###
358
- * Added 2 new gallery templates
359
- * Added 10+ actions and filters for more customization
360
- * Countless bug fixes and enhancements
361
-
362
- ### 1.1.7 ###
363
- * first version!
1
+ ![Plugin Banner](https://s3.amazonaws.com/foogallery/foogallery-large.png)
2
3
+ Why choose FooGallery? Stunning gallery layouts, responsive, retina-ready, lightning fast, easy to use.
4
5
+ [FooGallery Homepage](http://foo.gallery/)
6
7
+ [FooGallery Demos](http://foo.gallery/demos)
8
9
+ [FooGallery on wordpress.org](https://wordpress.org/plugins/foogallery/)
10
11
+ [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/fooplugins/foogallery/badges/quality-score.png?b=develop)](https://scrutinizer-ci.com/g/fooplugins/foogallery/?branch=develop)
README.txt CHANGED
@@ -3,16 +3,16 @@ Contributors: bradvin, steveush, fooplugins, freemius
3
Donate link: http://fooplugins.com
4
Tags: gallery, image gallery, photo gallery, responsive, album, media gallery, masonry gallery, portfolio, justified image gallery, video gallery, photography, photographer, retina
5
Requires at least: 3.9
6
- Tested up to: 4.9.1
7
Stable tag: trunk
8
License: GPLv2 or later
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
11
- FooGallery is the best image gallery plugin for WordPress. Why? Stunning gallery layouts, responsive, retina-ready, lightning fast, easy to use.
12
13
== Description ==
14
15
- FooGallery is the best image gallery plugin for WordPress. Why? Stunning gallery layouts, responsive, retina-ready, lightning fast, easy to use. Built to be highly configurable and extensible for developers or freelancers.
16
17
[View the FooGallery Homepage & DEMO](http://foo.gallery/)
18
@@ -61,6 +61,8 @@ FooGallery was designed to be the most developer-friendly gallery plugin availab
61
**PRO Features**
62
63
* 11 Beautiful Hover Effect Presets
64
* Polaroid PRO Gallery Template
65
* Grid PRO Gallery Template
66
* Advanced Pagination
@@ -98,8 +100,6 @@ FooGallery was designed to be the most developer-friendly gallery plugin availab
98
* [Custom Branding](http://fooplugins.com/plugins/foogallery-branding/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
99
* [FooBox PRO Lightbox](http://fooplugins.com/plugins/foobox/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
100
* [FooBox FREE Lightbox](http://wordpress.org/plugins/foobox-image-lightbox)
101
- * [ZOOM Template](http://wordpress.org/plugins/foogallery-zoom-template/)
102
- * [Use Media Menu](https://github.com/fooplugins/foogallery-media-menu)
103
* Build your own!!!
104
105
**Documentation**
@@ -122,7 +122,7 @@ FooGallery is hosted on [GitHub](https://github.com/fooplugins/foogallery). If y
122
123
= Why are my thumbnails so blurry? =
124
125
- Have you enabled retina support for your galleries? Displays with retina support can show better quality thumbnails when retina support is enabled. To enable retina support, edit the gallery and locate the Retina Support metabox.
126
127
= Can I add videos to my galleries? =
128
@@ -146,10 +146,25 @@ Hell, yes! Check out our [developer page](http://foo.gallery/developers/)
146
147
== Upgrade Notice ==
148
149
- Update now to support FooVideo and many other improvements!
150
151
== Changelog ==
152
153
= 1.4.15 =
154
155
* Fix : All-In-One stack album fatal error when 2 albums on same page
@@ -159,7 +174,7 @@ Update now to support FooVideo and many other improvements!
159
* Fix : All-In-One stack album now uses the gallery featured image
160
* Added more position options for Single Thumbnail Gallery
161
* Added paging output setting
162
- * Update to latest client side JS 1.0.19
163
164
= 1.4.12 =
165
3
Donate link: http://fooplugins.com
4
Tags: gallery, image gallery, photo gallery, responsive, album, media gallery, masonry gallery, portfolio, justified image gallery, video gallery, photography, photographer, retina
5
Requires at least: 3.9
6
+ Tested up to: 4.9.4
7
Stable tag: trunk
8
License: GPLv2 or later
9
License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
11
+ Why choose FooGallery? Stunning gallery layouts, responsive, retina-ready, lightning fast, easy to use.
12
13
== Description ==
14
15
+ Why choose FooGallery? Stunning gallery layouts, responsive, retina-ready, lightning fast, easy to use. Built to be highly configurable and extensible for developers or freelancers.
16
17
[View the FooGallery Homepage & DEMO](http://foo.gallery/)
18
61
**PRO Features**
62
63
* 11 Beautiful Hover Effect Presets
64
+ * Media Tags and Categories
65
+ * Gallery Filtering using Media Tags or Categories
66
* Polaroid PRO Gallery Template
67
* Grid PRO Gallery Template
68
* Advanced Pagination
100
* [Custom Branding](http://fooplugins.com/plugins/foogallery-branding/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
101
* [FooBox PRO Lightbox](http://fooplugins.com/plugins/foobox/?utm_source=foogalleryplugin&utm_medium=foogallerylink&utm_campaign=foogallery_wprepo)
102
* [FooBox FREE Lightbox](http://wordpress.org/plugins/foobox-image-lightbox)
103
* Build your own!!!
104
105
**Documentation**
122
123
= Why are my thumbnails so blurry? =
124
125
+ Have you enabled retina support for your galleries? To enable retina support, edit the gallery and locate the Retina Support metabox.
126
127
= Can I add videos to my galleries? =
128
146
147
== Upgrade Notice ==
148
149
+ Update now to get all the latest features, bug fixes and improvements!
150
151
== Changelog ==
152
153
+ = 1.4.25 =
154
+
155
+ * New : Retina support for albums!
156
+ * New : Default crop position setting for attachments
157
+ * New : Speed up gallery previews in wp-admin
158
+ * New : Caption support for Responsive Lightbox by dFactory
159
+ * Fix : Extension loading issues on certain installs
160
+ * Fix : Shortcode copy-to-clipboard metabox works again
161
+ * Fix : Bugs fixes for paging, filtering, FooBox and more
162
+ * Fix : Ensure jquery-ui-sortable is loaded on edit page for some installs
163
+ * Fix : All-In-One Stack Album layout bugs
164
+ * Fix : Reworked extensions listing page logic
165
+ * Update : FooGallery client side 1.0.23
166
+ * Update : Freemius SDK 1.2.4
167
+
168
= 1.4.15 =
169
170
* Fix : All-In-One stack album fatal error when 2 albums on same page
174
* Fix : All-In-One stack album now uses the gallery featured image
175
* Added more position options for Single Thumbnail Gallery
176
* Added paging output setting
177
+ * Update to latest client side JS 1.0.20
178
179
= 1.4.12 =
180
css/admin-foogallery.css CHANGED
@@ -459,4 +459,36 @@ button[data-balloon]{overflow:visible}[data-balloon]{position:relative}[data-bal
459
460
.foogallery_template_field_type-thumb_size_no_crop label+input {
461
margin-left: 5px;
462
- }
459
460
.foogallery_template_field_type-thumb_size_no_crop label+input {
461
margin-left: 5px;
462
+ }
463
+
464
+ /* changes to the media modal */
465
+ .compat-item .compat-attachment-fields th.label label span {
466
+ text-align: left;
467
+ }
468
+
469
+ .compat-item .compat-attachment-fields td.field {
470
+ width: 100%;
471
+ margin: 0;
472
+ }
473
+
474
+ .media-modal .attachments-browser .media-toolbar {
475
+ right: 500px;
476
+ }
477
+ .media-modal .attachments {
478
+ right: 500px;
479
+ }
480
+ .media-modal .media-sidebar {
481
+ width: 467px;
482
+ }
483
+
484
+ @media (max-width: 900px) {
485
+ .media-modal .attachments-browser .media-toolbar {
486
+ right: 300px;
487
+ }
488
+ .media-modal .attachments {
489
+ right: 300px;
490
+ }
491
+ .media-modal .media-sidebar {
492
+ width: 267px;
493
+ }
494
+ }
extensions/albums/admin/class-metaboxes.php CHANGED
@@ -241,14 +241,14 @@ if ( ! class_exists( 'FooGallery_Admin_Album_MetaBoxes' ) ) {
241
$shortcode = $album->shortcode();
242
?>
243
<p class="foogallery-shortcode">
244
- <input type="text" id="foogallery-copy-shortcode" size="<?php echo strlen( $shortcode ); ?>" value="<?php echo htmlspecialchars( $shortcode ); ?>" readonly="readonly" />
245
</p>
246
<p>
247
<?php _e( 'Paste the above shortcode into a post or page to show the album.', 'foogallery' ); ?>
248
</p>
249
<script>
250
jQuery(function($) {
251
- var shortcodeInput = document.querySelector('#foogallery-copy-shortcode');
252
shortcodeInput.addEventListener('click', function () {
253
try {
254
// select the contents
241
$shortcode = $album->shortcode();
242
?>
243
<p class="foogallery-shortcode">
244
+ <input type="text" id="foogallery_copy_shortcode" size="<?php echo strlen( $shortcode ); ?>" value="<?php echo htmlspecialchars( $shortcode ); ?>" readonly="readonly" />
245
</p>
246
<p>
247
<?php _e( 'Paste the above shortcode into a post or page to show the album.', 'foogallery' ); ?>
248
</p>
249
<script>
250
jQuery(function($) {
251
+ var shortcodeInput = document.querySelector('#foogallery_copy_shortcode');
252
shortcodeInput.addEventListener('click', function () {
253
try {
254
// select the contents
extensions/albums/album-default.php CHANGED
@@ -4,6 +4,7 @@
4
*/
5
global $current_foogallery_album;
6
global $current_foogallery_album_arguments;
7
$gallery = foogallery_album_get_current_gallery();
8
$alignment = foogallery_album_template_setting( 'alignment', 'alignment-left' );
9
$foogallery = false;
@@ -44,6 +45,7 @@ if ( false !== $foogallery ) {
44
<ul class="foogallery-album-gallery-list <?php echo $alignment; ?>">
45
<?php
46
foreach ( $current_foogallery_album->galleries() as $gallery ) {
47
if (!empty($gallery->attachment_ids)) {
48
$attachment = $gallery->featured_attachment();
49
4
*/
5
global $current_foogallery_album;
6
global $current_foogallery_album_arguments;
7
+ global $current_foogallery;
8
$gallery = foogallery_album_get_current_gallery();
9
$alignment = foogallery_album_template_setting( 'alignment', 'alignment-left' );
10
$foogallery = false;
45
<ul class="foogallery-album-gallery-list <?php echo $alignment; ?>">
46
<?php
47
foreach ( $current_foogallery_album->galleries() as $gallery ) {
48
+ $current_foogallery = $gallery;
49
if (!empty($gallery->attachment_ids)) {
50
$attachment = $gallery->featured_attachment();
51
extensions/albums/album-stack.php CHANGED
@@ -4,6 +4,7 @@
4
*/
5
global $current_foogallery_album;
6
global $current_foogallery_album_arguments;
7
$args = foogallery_album_template_setting( 'thumbnail_dimensions', array() );
8
$lightbox = foogallery_album_template_setting( 'lightbox', 'unknown' );
9
$random_angle = foogallery_album_template_setting( 'random_angle', 'false' );
@@ -33,15 +34,17 @@ if ( !function_exists( 'foogallery_album_all_in_one_stack_render_gallery_attachm
33
<ul id="foogallery-stack-album-<?php echo $current_foogallery_album->ID; ?>" class="tp-grid">
34
<?php
35
foreach ( $current_foogallery_album->galleries() as $gallery ) {
36
- $featured_image = $gallery->featured_attachment();
37
38
foreach ( $gallery->attachments() as $attachment ) {
39
- if ( $featured_image->ID !== $attachment->ID ) {
40
- //force the featured image to be last!
41
foogallery_album_all_in_one_stack_render_gallery_attachment( $gallery, $attachment, $args, $lightbox );
42
}
43
}
44
- foogallery_album_all_in_one_stack_render_gallery_attachment( $gallery, $featured_image, $args, $lightbox );
45
}
46
?>
47
</ul>
4
*/
5
global $current_foogallery_album;
6
global $current_foogallery_album_arguments;
7
+ global $current_foogallery;
8
$args = foogallery_album_template_setting( 'thumbnail_dimensions', array() );
9
$lightbox = foogallery_album_template_setting( 'lightbox', 'unknown' );
10
$random_angle = foogallery_album_template_setting( 'random_angle', 'false' );
34
<ul id="foogallery-stack-album-<?php echo $current_foogallery_album->ID; ?>" class="tp-grid">
35
<?php
36
foreach ( $current_foogallery_album->galleries() as $gallery ) {
37
+ $current_foogallery = $gallery;
38
+ $featured_attachment = $gallery->featured_attachment();
39
+ //render the featured attachment first
40
+ foogallery_album_all_in_one_stack_render_gallery_attachment( $gallery, $featured_attachment, $args, $lightbox );
41
42
foreach ( $gallery->attachments() as $attachment ) {
43
+ if ( $featured_attachment->ID !== $attachment->ID ) {
44
+ //render all but the featured attachment
45
foogallery_album_all_in_one_stack_render_gallery_attachment( $gallery, $attachment, $args, $lightbox );
46
}
47
}
48
}
49
?>
50
</ul>
extensions/albums/js/album-stack.js CHANGED
@@ -63,7 +63,9 @@ if (!window.FooGalleryStackAlbumModernizr) {
63
// ======================= imagesLoaded Plugin ===============================
64
// https://github.com/desandro/imagesloaded
65
66
- // $('#my-container').imagesLoaded(myFunction)
67
// execute a callback when all images have loaded.
68
// needed because .load() doesn't work on cached images
69
@@ -76,7 +78,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
76
// blank image data-uri bypasses webkit log warning (thx doug jones)
77
var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
78
79
- $.fn.imagesLoaded = function( callback ) {
80
var $this = this,
81
deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
82
hasNotify = $.isFunction(deferred.notify),
@@ -130,7 +132,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
130
}
131
132
// cache image and its state for future calls
133
- $.data( img, 'imagesLoaded', { isBroken: isBroken, src: img.src } );
134
135
// trigger deferred progress method if present
136
if ( hasNotify ) {
@@ -140,7 +142,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
140
// call doneLoading and clean listeners if all images are loaded
141
if ( $images.length === loaded.length ){
142
setTimeout( doneLoading );
143
- $images.unbind( '.imagesLoaded' );
144
}
145
}
146
@@ -148,7 +150,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
148
if ( !$images.length ) {
149
doneLoading();
150
} else {
151
- $images.bind( 'load.imagesLoaded error.imagesLoaded', function( event ){
152
// trigger imgLoaded
153
imgLoaded( event.target, event.type === 'error' );
154
}).each( function( i, el ) {
@@ -156,7 +158,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
156
157
// find out if this image has been already checked for status
158
// if it was, and src has not changed, call imgLoaded on it
159
- var cached = $.data( el, 'imagesLoaded' );
160
if ( cached && cached.src === src ) {
161
imgLoaded( el, cached.isBroken );
162
return;
@@ -237,7 +239,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
237
238
// preload images
239
var self = this;
240
- this.el.imagesLoaded( function() {
241
self.options.onLoad();
242
self._layout();
243
self._initEvents();
@@ -408,35 +410,41 @@ if (!window.FooGalleryStackAlbumModernizr) {
408
_setInitialStyle : function() {
409
for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
410
411
- var p = this.pilesArr[j];
412
413
for( var i = 0, len = p.elements.length; i < len; ++i ) {
414
415
- var $el = $( p.elements[i].el ),
416
- styleCSS = { transform : 'rotate(0deg)' };
417
418
this._applyInitialTransition( $el );
419
420
- if( i === len - 2 ) {
421
styleCSS = { transform : 'rotate(' + this.options.pileAngles + 'deg)' };
422
}
423
else if( i === len - 3 ) {
424
styleCSS = { transform : 'rotate(-' + this.options.pileAngles + 'deg)' };
425
}
426
- else if( i !== len - 1 ) {
427
var extraStyle = { visibility : 'hidden' };
428
$el.css( extraStyle ).data( 'extraStyle', extraStyle );
429
}
430
- else if( p.name.substr( 0, 6 ) !== 'nopile' ) {
431
- $el.data( 'front', true ).append( '<div class="tp-title-cover"><div class="tp-title"><span>' + p.name + '</span><span>' + len + '</span></div></div>' );
432
- }
433
434
$el.css( styleCSS ).data( {
435
initialStyle : styleCSS,
436
pileName : p.name,
437
pileCount : len,
438
shadow : $el.css( 'box-shadow' ),
439
- isPile : p.name.substr( 0, 6 ) === 'nopile' ? false : true
440
} );
441
442
}
@@ -461,9 +469,9 @@ if (!window.FooGalleryStackAlbumModernizr) {
461
462
var p = this.pilesArr[j],
463
464
- //for( var pile in this.piles ) {
465
- //
466
- // var p = this.piles[pile],
467
stepW = this.itemSize.width + this.options.gutter,
468
469
accumIL = 0, accumIT = 0, il, it;
@@ -540,8 +548,9 @@ if (!window.FooGalleryStackAlbumModernizr) {
540
// the position of the items will influence the final margin left value and height for the ul
541
// center the ul
542
lastItemTop = this.spread ? lastItemTop : accumT;
543
this.el.css( {
544
- marginLeft : ml,
545
height : lastItemTop + this.itemSize.height
546
} );
547
@@ -553,23 +562,17 @@ if (!window.FooGalleryStackAlbumModernizr) {
553
}
554
555
// final style
556
- var fs;
557
558
for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
559
560
var p = this.pilesArr[j],
561
-
562
- //for( var pile in this.piles ) {
563
- //
564
- // var p = this.piles[ pile ],
565
-
566
cnt = 0;
567
568
for( var i = 0, len = p.elements.length; i < len; ++i ) {
569
570
var elem = p.elements[i],
571
$item = $( elem.el ),
572
- $img = $item.find( 'img' ),
573
styleCSS = p.name === this.pileName ? {
574
zIndex : 9999,
575
visibility : 'visible',
@@ -581,12 +584,13 @@ if (!window.FooGalleryStackAlbumModernizr) {
581
582
if( p.name === this.pileName ) {
583
584
- if( $item.data( 'front' ) ) {
585
- $item.find( 'div.tp-title' ).hide();
586
}
587
588
- if( i < len - 1 ) {
589
- $img.css( 'visibility', 'visible' );
590
}
591
592
fs = elem.finalPosition;
@@ -602,9 +606,6 @@ if (!window.FooGalleryStackAlbumModernizr) {
602
}
603
604
}
605
- else if( i < len - 1 ) {
606
- $img.css( 'visibility', 'hidden' );
607
- }
608
609
$item.css( styleCSS );
610
@@ -645,7 +646,11 @@ if (!window.FooGalleryStackAlbumModernizr) {
645
646
}
647
648
- this.el.css( 'height', fs.top + this.itemSize.height );
649
650
},
651
_closePile : function() {
@@ -666,11 +671,6 @@ if (!window.FooGalleryStackAlbumModernizr) {
666
for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
667
668
var p = this.pilesArr[j],
669
-
670
- //for( var pile in this.piles ) {
671
- //
672
- // var p = this.piles[ pile ],
673
-
674
cnt = 0;
675
676
for( var i = 0, len = p.elements.length; i < len; ++i ) {
@@ -704,7 +704,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
704
return;
705
}
706
707
- var $el = $( this ), extraStyle = $el.data( 'extraStyle' );
708
709
// hack: remove box-shadow while animating to prevent the shadow stack effect
710
$el.css( 'box-shadow', $el.data( 'shadow' ) );
@@ -714,7 +714,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
714
self._applyInitialTransition( $el );
715
}
716
else {
717
- $el.css( $el.data( 'initialStyle' ) );
718
}
719
720
if( extraStyle ) {
@@ -725,6 +725,8 @@ if (!window.FooGalleryStackAlbumModernizr) {
725
726
if( $el.data( 'front' ) ) {
727
$el.find( 'div.tp-title' ).show();
728
}
729
730
if( cnt === $el.data( 'pileCount' ) ) {
@@ -739,9 +741,10 @@ if (!window.FooGalleryStackAlbumModernizr) {
739
}
740
741
var $el = $( this );
742
-
743
- if( $el.index() < len - 1 ) {
744
- $el.find( 'img' ).css( 'visibility', 'visible' );
745
}
746
747
if( self.support ) {
@@ -759,7 +762,11 @@ if (!window.FooGalleryStackAlbumModernizr) {
759
this.pileName = '';
760
761
// update ul height
762
- this.el.css( 'height', fs.top + this.itemSize.height );
763
764
}
765
@@ -820,7 +827,7 @@ if (!window.FooGalleryStackAlbumModernizr) {
820
if ( !instance ) {
821
822
logError( "cannot call methods on stapel prior to initialization; " +
823
- "attempted to call method '" + options + "'" );
824
return;
825
826
}
63
// ======================= imagesLoaded Plugin ===============================
64
// https://github.com/desandro/imagesloaded
65
66
+ // renamed from imagesLoaded to foogalleryImagesLoaded to avoid conflicts
67
+
68
+ // $('#my-container').foogalleryImagesLoaded(myFunction)
69
// execute a callback when all images have loaded.
70
// needed because .load() doesn't work on cached images
71
78
// blank image data-uri bypasses webkit log warning (thx doug jones)
79
var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
80
81
+ $.fn.foogalleryImagesLoaded = function( callback ) {
82
var $this = this,
83
deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
84
hasNotify = $.isFunction(deferred.notify),
132
}
133
134
// cache image and its state for future calls
135
+ $.data( img, 'foogalleryImagesLoaded', { isBroken: isBroken, src: img.src } );
136
137
// trigger deferred progress method if present
138
if ( hasNotify ) {
142
// call doneLoading and clean listeners if all images are loaded
143
if ( $images.length === loaded.length ){
144
setTimeout( doneLoading );
145
+ $images.unbind( '.foogalleryImagesLoaded' );
146
}
147
}
148
150
if ( !$images.length ) {
151
doneLoading();
152
} else {
153
+ $images.bind( 'load.foogalleryImagesLoaded error.foogalleryImagesLoaded', function( event ){
154
// trigger imgLoaded
155
imgLoaded( event.target, event.type === 'error' );
156
}).each( function( i, el ) {
158
159
// find out if this image has been already checked for status
160
// if it was, and src has not changed, call imgLoaded on it
161
+ var cached = $.data( el, 'foogalleryImagesLoaded' );
162
if ( cached && cached.src === src ) {
163
imgLoaded( el, cached.isBroken );
164
return;
239
240
// preload images
241
var self = this;
242
+ this.el.foogalleryImagesLoaded( function() {
243
self.options.onLoad();
244
self._layout();
245
self._initEvents();
410
_setInitialStyle : function() {
411
for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
412
413
+ var p = this.pilesArr[j], featured = false, $el, styleCSS;
414
+ for (var k = 0, kl = p.elements.length; k < kl; k++){
415
+ if ( $( p.elements[k].el ).data('featured') ){
416
+ featured = true;
417
+ break;
418
+ }
419
+ }
420
421
for( var i = 0, len = p.elements.length; i < len; ++i ) {
422
423
+ $el = $( p.elements[i].el );
424
+ styleCSS = { transform : 'rotate(0deg)' };
425
426
this._applyInitialTransition( $el );
427
428
+ if ( p.name.substr( 0, 6 ) !== 'nopile' && ( $el.data('featured') || ( !featured && i === 0 ) ) ){
429
+ $el.css({ zIndex: 9999 }).data( 'front', true ).append( '<div class="tp-title-cover"><div class="tp-title"><span>' + p.name + '</span><span>' + len + '</span></div></div>' );
430
+ }
431
+ else if( i === len - 2 ) {
432
styleCSS = { transform : 'rotate(' + this.options.pileAngles + 'deg)' };
433
}
434
else if( i === len - 3 ) {
435
styleCSS = { transform : 'rotate(-' + this.options.pileAngles + 'deg)' };
436
}
437
+ else {
438
var extraStyle = { visibility : 'hidden' };
439
$el.css( extraStyle ).data( 'extraStyle', extraStyle );
440
}
441
442
$el.css( styleCSS ).data( {
443
initialStyle : styleCSS,
444
pileName : p.name,
445
pileCount : len,
446
shadow : $el.css( 'box-shadow' ),
447
+ isPile : p.name.substr(0, 6) !== 'nopile'
448
} );
449
450
}
469
470
var p = this.pilesArr[j],
471
472
+ //for( var pile in this.piles ) {
473
+ //
474
+ // var p = this.piles[pile],
475
stepW = this.itemSize.width + this.options.gutter,
476
477
accumIL = 0, accumIT = 0, il, it;
548
// the position of the items will influence the final margin left value and height for the ul
549
// center the ul
550
lastItemTop = this.spread ? lastItemTop : accumT;
551
+ this.marginLeft = ml;
552
this.el.css( {
553
+ marginLeft : this.marginLeft,
554
height : lastItemTop + this.itemSize.height
555
} );
556
562
}
563
564
// final style
565
+ var fs, rowWidth = 0;
566
567
for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
568
569
var p = this.pilesArr[j],
570
cnt = 0;
571
572
for( var i = 0, len = p.elements.length; i < len; ++i ) {
573
574
var elem = p.elements[i],
575
$item = $( elem.el ),
576
styleCSS = p.name === this.pileName ? {
577
zIndex : 9999,
578
visibility : 'visible',
584
585
if( p.name === this.pileName ) {
586
587
+ if (elem.finalPosition.top === 0){
588
+ if (rowWidth > 0) rowWidth += this.options.gutter;
589
+ rowWidth += this.itemSize.width;
590
}
591
592
+ if( $item.data( 'front' ) ) {
593
+ $item.find( 'div.tp-title' ).hide();
594
}
595
596
fs = elem.finalPosition;
606
}
607
608
}
609
610
$item.css( styleCSS );
611
646
647
}
648
649
+ //this.el.css( 'height', fs.top + this.itemSize.height );
650
+ this.el.css({
651
+ marginLeft: Math.ceil((this.elWidth - rowWidth) / 2),
652
+ height: fs.top + this.itemSize.height
653
+ });
654
655
},
656
_closePile : function() {
671
for (var j =0, pile_len = this.pilesArr.length; j < pile_len; j++){
672
673
var p = this.pilesArr[j],
674
cnt = 0;
675
676
for( var i = 0, len = p.elements.length; i < len; ++i ) {
704
return;
705
}
706
707
+ var $el = $( this ), extraStyle = $el.data( 'extraStyle' ), initialStyle = $el.data( 'initialStyle' );
708
709
// hack: remove box-shadow while animating to prevent the shadow stack effect
710
$el.css( 'box-shadow', $el.data( 'shadow' ) );
714
self._applyInitialTransition( $el );
715
}
716
else {
717
+ $el.css( initialStyle );
718
}
719
720
if( extraStyle ) {
725
726
if( $el.data( 'front' ) ) {
727
$el.find( 'div.tp-title' ).show();
728
+ } else {
729
+ $el.css({visibility: 'hidden', zIndex: 1});
730
}
731
732
if( cnt === $el.data( 'pileCount' ) ) {
741
}
742
743
var $el = $( this );
744
+ if( $el.data( 'front' ) ) {
745
+ $el.find( 'div.tp-title' ).show();
746
+ } else {
747
+ $el.css({visibility: 'hidden', zIndex: 1});
748
}
749
750
if( self.support ) {
762
this.pileName = '';
763
764
// update ul height
765
+ //this.el.css( 'height', fs.top + this.itemSize.height );
766
+ this.el.css({
767
+ marginLeft: this.marginLeft,
768
+ height: fs.top + this.itemSize.height
769
+ });
770
771
}
772
827
if ( !instance ) {
828
829
logError( "cannot call methods on stapel prior to initialization; " +
830
+ "attempted to call method '" + options + "'" );
831
return;
832
833
}
extensions/default-templates/default/class-default-gallery-template.php CHANGED
@@ -55,6 +55,7 @@ if ( !class_exists( 'FooGallery_Default_Gallery_Template' ) ) {
55
'lazyload_support' => true,
56
'mandatory_classes' => 'fg-default',
57
'thumbnail_dimensions' => true,
58
'fields' => array(
59
array(
60
'id' => 'thumbnail_dimensions',
55
'lazyload_support' => true,
56
'mandatory_classes' => 'fg-default',
57
'thumbnail_dimensions' => true,
58
+ 'filtering_support' => true,
59
'fields' => array(
60
array(
61
'id' => 'thumbnail_dimensions',
extensions/default-templates/justified/class-justified-gallery-template.php CHANGED
@@ -55,6 +55,7 @@ if ( !class_exists( 'FooGallery_Justified_Gallery_Template' ) ) {
55
'paging_support' => true,
56
'mandatory_classes' => 'fg-justified',
57
'thumbnail_dimensions' => true,
58
'fields' => array(
59
array(
60
'id' => 'thumb_height',
55
'paging_support' => true,
56
'mandatory_classes' => 'fg-justified',
57
'thumbnail_dimensions' => true,
58
+ 'filtering_support' => true,
59
'fields' => array(
60
array(
61
'id' => 'thumb_height',
extensions/default-templates/masonry/class-masonry-gallery-template.php CHANGED
@@ -64,6 +64,7 @@ if ( !class_exists( 'FooGallery_Masonry_Gallery_Template' ) ) {
64
'paging_support' => true,
65
'mandatory_classes' => 'fg-masonry',
66
'thumbnail_dimensions' => true,
67
'fields' => array(
68
array(
69
'id' => 'thumbnail_width',
64
'paging_support' => true,
65
'mandatory_classes' => 'fg-masonry',
66
'thumbnail_dimensions' => true,
67
+ 'filtering_support' => true,
68
'fields' => array(
69
array(
70
'id' => 'thumbnail_width',
extensions/default-templates/shared/css/foogallery.css CHANGED
@@ -1847,7 +1847,7 @@ only screen and (min-resolution: 2.25dppx) {
1847
text-align: left;
1848
}
1849
.fg-simple_portfolio .fg-caption-desc {
1850
- text-align: justify;
1851
}
1852
.fg-simple_portfolio.fg-light .fg-caption,
1853
.fg-simple_portfolio.fg-dark .fg-caption {
@@ -1885,7 +1885,7 @@ only screen and (min-resolution: 2.25dppx) {
1885
1886
/* Handle Border Sizing */
1887
.fg-simple_portfolio .fg-caption {
1888
- border-width: 10px;
1889
}
1890
.fg-simple_portfolio .fg-caption-title+.fg-caption-desc {
1891
margin-top: 5px;
1847
text-align: left;
1848
}
1849
.fg-simple_portfolio .fg-caption-desc {
1850
+ text-align: left;
1851
}
1852
.fg-simple_portfolio.fg-light .fg-caption,
1853
.fg-simple_portfolio.fg-dark .fg-caption {
1885
1886
/* Handle Border Sizing */
1887
.fg-simple_portfolio .fg-caption {
1888
+ border-width: 0;
1889
}
1890
.fg-simple_portfolio .fg-caption-title+.fg-caption-desc {
1891
margin-top: 5px;
extensions/default-templates/shared/css/foogallery.min.css CHANGED
@@ -1 +1 @@
1
- .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error,.foogallery .fg-item.fg-loading{background:no-repeat center}.foogallery .fg-item.fg-error{background-image:url(../img/image.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@3x.png)}}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:none;height:auto;margin:0}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;-webkit-animation:loading-default 1.1s infinite ease;animation:loading-default 1.1s infinite ease}@-webkit-keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}@keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:rgba(130,130,130,1);-webkit-animation:loading-bars 1s infinite ease-in-out;animation:loading-bars 1s infinite ease-in-out;width:1em;height:4em}.fg-loading-bars .fg-loader{color:rgba(130,130,130,1);text-indent:-9999em;font-size:4px;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease;animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation:loading-pulse 1.8s infinite ease-in-out;animation:loading-pulse 1.8s infinite ease-in-out}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;text-indent:-9999em;transform:translateX(-50%) translateY(-150%);-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite linear;animation:loading-dots 1.3s infinite linear}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite linear;animation:loading-partial 1.1s infinite linear}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item,.foogallery.fg-loaded-fade-in .fg-item,.foogallery.fg-loaded-flip .fg-item,.foogallery.fg-loaded-fly .fg-item,.foogallery.fg-loaded-scale-up .fg-item,.foogallery.fg-loaded-slide-down .fg-item,.foogallery.fg-loaded-slide-left .fg-item,.foogallery.fg-loaded-slide-right .fg-item,.foogallery.fg-loaded-slide-up .fg-item,.foogallery.fg-loaded-swing-down .fg-item{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-item-inner,.foogallery.fg-loaded-flip .fg-item-inner,.foogallery.fg-loaded-fly .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery .fg-caption{visibility:hidden;opacity:0;background-color:rgba(0,0,0,.6);color:#fff;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer}.foogallery .fg-caption a{text-decoration:none;color:#fff;border-bottom:1px solid #fff}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:5px}.foogallery .fg-caption-desc{padding:5px}.foogallery .fg-caption-title+.fg-caption-desc{padding-top:0}.foogallery.fg-caption-always .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1;text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-thumb:before{display:none}.foogallery.fg-hover-circle-plus .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{content:"";display:block;position:absolute;visibility:hidden;opacity:0;top:0;bottom:0;left:0;right:0;z-index:8;background:rgba(0,0,0,.5) no-repeat center center;background-size:32px 32px}.foogallery.fg-hover-circle-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-circle-plus .fg-thumb:focus:before,.foogallery.fg-hover-external .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:focus:before,.foogallery.fg-hover-eye .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:focus:before,.foogallery.fg-hover-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:focus:before,.foogallery.fg-hover-tint .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:focus:before,.foogallery.fg-hover-zoom .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:focus:before,.foogallery.fg-hover-zoom2 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:focus:before,.foogallery.fg-hover-zoom3 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:focus:before{visibility:visible;opacity:1}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-tint .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-caption-inner:before{content:"";display:inline-block;position:relative;width:32px;height:32px;margin:10px 0 5px 0;background:transparent no-repeat center center;background-size:32px 32px;vertical-align:middle}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@2x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@2x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@2x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@2x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@2x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@2x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@3x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@3x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@3x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@3x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@3x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@3x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@3x.png)}}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-caption,.foogallery.fg-hover-colorize .fg-image,.foogallery.fg-hover-colorize .fg-thumb:before,.foogallery.fg-hover-fade .fg-thumb:before,.foogallery.fg-hover-grayscale .fg-image,.foogallery.fg-hover-grayscale .fg-thumb:before,.foogallery.fg-hover-instant .fg-thumb:before,.foogallery.fg-hover-push .fg-thumb,.foogallery.fg-hover-scale .fg-item,.foogallery.fg-hover-scale .fg-thumb:before,.foogallery.fg-hover-slide-down .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-thumb:before{transition-timing-function:ease;transition-duration:.3s}.foogallery.fg-hover-colorize .fg-image{filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'saturate\' values=\'0\'/></filter></svg>#grayscale");filter:gray;-webkit-filter:grayscale(100%);-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{-webkit-filter:none;filter:none}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{-webkit-filter:none;filter:none;-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);filter:gray;opacity:1}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:transform;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-thumb:before{transform:translateY(0) translateX(0)}.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{transform:translateY(100%)}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before{transform:translateY(-100%)}.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before{transform:translateX(100%)}.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before{transform:translateX(-100%)}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fg-paging-container{display:block;padding:15px;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9e9e9e}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#8a8a8a}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#8a8a8a}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9e9e9e;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-default:after{content:'';display:block;clear:both}.fg-default .fg-item,.fg-default .fg-item-inner,.fg-default .fg-thumb{display:inline-block;vertical-align:top;max-width:100%}.fg-default .fg-image{border-radius:0;display:block;max-width:100%;height:auto;margin:0;padding:0}.fg-default .fg-image{vertical-align:top}.fg-default.fg-left{text-align:left}.fg-default.fg-center{text-align:center}.fg-default.fg-right{text-align:right}.fg-default.fg-gutter-5{padding-left:5px;margin-bottom:-5px}.fg-default.fg-gutter-5 .fg-item{margin-right:5px;margin-bottom:5px}.fg-default.fg-gutter-10{padding-left:10px;margin-bottom:-10px}.fg-default.fg-gutter-10 .fg-item{margin-right:10px;margin-bottom:10px}.fg-default.fg-gutter-15{padding-left:15px;margin-bottom:-15px}.fg-default.fg-gutter-15 .fg-item{margin-right:15px;margin-bottom:15px}.fg-default.fg-gutter-20{padding-left:20px;margin-bottom:-20px}.fg-default.fg-gutter-20 .fg-item{margin-right:20px;margin-bottom:20px}.fg-default.fg-gutter-25{padding-left:25px;margin-bottom:-25px}.fg-default.fg-gutter-25 .fg-item{margin-right:25px;margin-bottom:25px}.fg-masonry *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.foogallery.fg-masonry.fg-center{margin:0 auto}.fg-masonry .fg-thumb{display:block}.fg-masonry.fg-masonry-fixed .fg-thumb{display:inline-block}.fg-masonry.fg-masonry-fixed .fg-image{max-width:100%}.fg-masonry .fg-column-width{display:inline-block;visibility:hidden;height:0;border:solid 0 transparent}.fg-masonry.fg-masonry-2col .fg-image,.fg-masonry.fg-masonry-3col .fg-image,.fg-masonry.fg-masonry-4col .fg-image,.fg-masonry.fg-masonry-5col .fg-image{width:100%;height:auto;max-width:100%}.fg-masonry .fg-item{line-height:0;font-size:0}.fg-masonry.fg-masonry-2col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-2col .fg-column-width{width:49%}.fg-masonry.fg-masonry-2col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-3col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-3col .fg-column-width{width:32%}.fg-masonry.fg-masonry-3col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-4col .fg-item{margin-bottom:1%;width:24%}.fg-masonry.fg-masonry-4col .fg-column-width{width:24%}.fg-masonry.fg-masonry-4col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item{margin-bottom:3%;width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width{width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:19%}.fg-masonry.fg-masonry-5col .fg-column-width{width:19%}.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}@media screen and (max-width:720px){.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:32%}.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:480px){.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:49%}.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:320px){.fg-masonry.fg-masonry-2col .fg-item,.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:100%}.fg-masonry.fg-masonry-2col .fg-column-width,.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col .fg-gutter-width,.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:0}}.foogallery.fg-border-thin .fg-column-width{border-width:5px}.foogallery.fg-border-medium .fg-column-width{border-width:10px}.foogallery.fg-border-thick .fg-column-width{border-width:15px}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner{display:block;position:relative;max-height:none;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-masonry.fg-captions-bottom .fg-caption-desc,.fg-masonry.fg-captions-bottom .fg-caption-title{text-align:left}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption,.fg-masonry.fg-captions-bottom.fg-light .fg-caption{color:#828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{color:#222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{color:#fff}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-masonry.fg-captions-bottom .fg-caption{border-width:10px}.fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc{margin-top:5px}.fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption{border-width:10px 5px 5px 5px}.fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption{border-width:15px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-justified{box-sizing:border-box;position:relative}.foogallery.fg-justified .fg-image,.foogallery.fg-justified .fg-item,.foogallery.fg-justified .fg-item-inner,.foogallery.fg-justified .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0}.fg-justified .fg-item{visibility:visible;position:absolute}.fg-justified .fg-item-inner{position:relative;width:100%;height:100%}.fg-justified .fg-thumb{position:relative;overflow:hidden}.fg-justified .fg-image{z-index:1}.fg-justified .fg-item.fg-positioned .fg-thumb{width:100%;height:100%}.fg-justified .fg-item.fg-positioned .fg-image{width:100%;height:auto;min-height:100%}.fg-simple_portfolio{box-sizing:border-box;position:relative;font-size:16px;margin:0 auto;padding:0;width:100%}.fg-simple_portfolio .fg-item{position:absolute;display:inline-block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-image,.fg-simple_portfolio .fg-item-inner,.fg-simple_portfolio .fg-thumb{display:block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-item-inner{position:relative;width:100%;height:100%}.fg-simple_portfolio .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0;border:none;outline:0;position:relative;overflow:hidden}.fg-simple_portfolio .fg-item.fg-positioned .fg-image{width:100%;height:auto}.fg-simple_portfolio .fg-image{z-index:1}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner{display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-simple_portfolio .fg-caption-title{text-align:left}.fg-simple_portfolio .fg-caption-desc{text-align:justify}.fg-simple_portfolio.fg-dark .fg-caption,.fg-simple_portfolio.fg-light .fg-caption{color:#828282}.fg-simple_portfolio.fg-dark .fg-caption a,.fg-simple_portfolio.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-simple_portfolio.fg-dark .fg-caption a:hover,.fg-simple_portfolio.fg-light .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-light .fg-caption-title,.fg-simple_portfolio.fg-light .fg-caption-title a{color:#222}.fg-simple_portfolio.fg-dark .fg-caption-title,.fg-simple_portfolio.fg-dark .fg-caption-title a{color:#fff}.fg-simple_portfolio.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-simple_portfolio.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-simple_portfolio.fg-captions-top .fg-item.fg-positioned .fg-thumb{position:absolute;bottom:0;left:0}.fg-simple_portfolio .fg-caption{border-width:10px}.fg-simple_portfolio .fg-caption-title+.fg-caption-desc{margin-top:5px}.fg-simple_portfolio.fg-border-thin .fg-caption{border-width:10px 5px 5px 5px}.fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption{border-width:5px 5px 10px 5px}.fg-simple_portfolio.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.fg-simple_portfolio.fg-border-thick .fg-caption{border-width:15px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 15px 0}.fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.foogallery.fg-preset.fg-polaroid .fg-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .35s,background-color .65s;transition:transform .35s,background-color .65s}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1){-webkit-transform:rotate(3deg);transform:rotate(3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n){-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n){-webkit-transform:rotate(1deg);transform:rotate(1deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n){-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}.foogallery.fg-preset.fg-polaroid .fg-item:hover{-webkit-transform:rotate(0);transform:rotate(0)}.foogallery.fg-preset.fg-polaroid .fg-caption{position:relative;width:auto;font-family:"Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.foogallery.fg-preset.fg-polaroid .fg-caption-inner,.foogallery.fg-preset.fg-polaroid .fg-caption-title{position:relative;width:auto}.foogallery.fg-preset.fg-polaroid .fg-caption-title{text-align:center}.foogallery.fg-preset.fg-polaroid .fg-caption-desc{display:none}.foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title,.foogallery.fg-preset.fg-polaroid .fg-caption-title{color:#333}.foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title{color:#fff}.foogallery.fg-preset.fg-polaroid .fg-caption{border-style:solid;border-color:transparent;border-width:10px}.foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc{margin-top:5px}.foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption{border-width:10px 5px 5px 5px}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption{border-width:5px 5px 10px 5px}.foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption{border-width:10px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption{border-width:15px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 15px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-image-viewer{display:block;font-family:'Open Sans','Helvetica Neue',Arial,sans-serif}.fg-image-viewer.fg-left{text-align:left}.fg-image-viewer.fg-center{text-align:center}.fg-image-viewer.fg-right{text-align:right}.fiv-inner{position:relative;display:inline-block;max-width:100%;overflow:hidden;z-index:6}.fiv-inner .fiv-inner-container{position:relative;overflow:hidden;max-width:100%;border-style:solid;border-width:0;border-bottom-width:4px;z-index:5}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited{position:relative;display:block;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item{position:relative;visibility:visible;opacity:1;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img{display:block;max-width:100%;height:auto;border:none;outline:0;text-decoration:none}.fg-image-viewer .fiv-inner .fiv-ctrls{display:block;text-align:center;font-size:14px;border-style:solid;line-height:34px}.fg-image-viewer .fiv-inner .fiv-ctrls:after{content:'';display:block;clear:both}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count{display:inline-block;font-weight:400;margin:0}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;min-width:80px;position:relative;overflow:hidden;transition:background-color .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{display:block;position:absolute;font-size:24px;line-height:30px;top:0;left:0;width:100%;transform:translateY(0);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before{transform:translateY(-100%)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span{display:block;width:100%;transform:translateY(100%);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span{transform:translateY(0)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:left}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2190'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:right}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2192'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span{margin:0 4px}/*!* Theme - Default (Light) *!*//*!* Theme - Dark *!*/.foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption{padding:0;border:none;background:#000;background:-moz-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:-webkit-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:linear-gradient(to right,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%)}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc{padding:0 10px 10px 10px}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-light .fiv-inner .fiv-inner-container{background-color:#fff;color:#333;border-color:#fff}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#f2f2f2}.fg-image-viewer.fg-light .fiv-next,.fg-image-viewer.fg-light .fiv-prev{box-shadow:inset 0 0 0 1px #ddd}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container{background-color:#333;color:#fff;border-color:#333}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#444}.fg-image-viewer.fg-dark .fiv-next,.fg-image-viewer.fg-dark .fiv-prev{box-shadow:inset 0 0 0 1px #222}.foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin .fg-item-inner{border-width:0}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container{border-width:4px}.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container{border-width:10px}.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container{border-width:16px}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls{border-top-width:1px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-round-small .fiv-inner{border-radius:5px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-round-medium .fiv-inner{border-radius:10px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-round-large .fiv-inner{border-radius:15px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-full .fiv-inner,.foogallery.fg-image-viewer.fg-round-full .fiv-next,.foogallery.fg-image-viewer.fg-round-full .fiv-prev{border-radius:50%}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner{box-shadow:none}.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-thumbnail,.foogallery.fg-thumbnail.fg-center{text-align:center}.foogallery.fg-thumbnail.fg-left{text-align:left}.foogallery.fg-thumbnail.fg-right{text-align:right}.foogallery.fg-thumbnail.fg-float-left{float:left;width:auto}.foogallery.fg-thumbnail.fg-float-right{float:right;width:auto}.foogallery.fg-thumbnail .fg-item{display:inline-block;vertical-align:top;max-width:100%}.foogallery.fg-thumbnail .fg-image{max-width:100%}.foogallery.fg-thumbnail .fg-st-hidden{display:none}
1
+ .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error,.foogallery .fg-item.fg-loading{background:no-repeat center}.foogallery .fg-item.fg-error{background-image:url(../img/image.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery .fg-item.fg-error{background-image:url(../img/image@3x.png)}}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:none;height:auto;margin:0}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;-webkit-animation:loading-default 1.1s infinite ease;animation:loading-default 1.1s infinite ease}@-webkit-keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}@keyframes loading-default{0%,100%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,1),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7)}12.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.7),1.8em -1.8em 0 0 rgba(130,130,130,1),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.5)}25%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.5),1.8em -1.8em 0 0 rgba(130,130,130,.7),2.5em 0 0 0 rgba(130,130,130,1),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}37.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.5),2.5em 0 0 0 rgba(130,130,130,.7),1.75em 1.75em 0 0 rgba(130,130,130,1),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.5),1.75em 1.75em 0 0 rgba(130,130,130,.7),0 2.5em 0 0 rgba(130,130,130,1),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}62.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.5),0 2.5em 0 0 rgba(130,130,130,.7),-1.8em 1.8em 0 0 rgba(130,130,130,1),-2.6em 0 0 0 rgba(130,130,130,.2),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}75%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.5),-1.8em 1.8em 0 0 rgba(130,130,130,.7),-2.6em 0 0 0 rgba(130,130,130,1),-1.8em -1.8em 0 0 rgba(130,130,130,.2)}87.5%{box-shadow:0 -2.6em 0 0 rgba(130,130,130,.2),1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.5),-2.6em 0 0 0 rgba(130,130,130,.7),-1.8em -1.8em 0 0 rgba(130,130,130,1)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:rgba(130,130,130,1);-webkit-animation:loading-bars 1s infinite ease-in-out;animation:loading-bars 1s infinite ease-in-out;width:1em;height:4em}.fg-loading-bars .fg-loader{color:rgba(130,130,130,1);text-indent:-9999em;font-size:4px;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease;animation:loading-trail-1 1.7s infinite ease,loading-trail-2 1.7s infinite ease}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation:loading-pulse 1.8s infinite ease-in-out;animation:loading-pulse 1.8s infinite ease-in-out}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;text-indent:-9999em;transform:translateX(-50%) translateY(-150%);-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite linear;animation:loading-dots 1.3s infinite linear}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite linear;animation:loading-partial 1.1s infinite linear}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item,.foogallery.fg-loaded-fade-in .fg-item,.foogallery.fg-loaded-flip .fg-item,.foogallery.fg-loaded-fly .fg-item,.foogallery.fg-loaded-scale-up .fg-item,.foogallery.fg-loaded-slide-down .fg-item,.foogallery.fg-loaded-slide-left .fg-item,.foogallery.fg-loaded-slide-right .fg-item,.foogallery.fg-loaded-slide-up .fg-item,.foogallery.fg-loaded-swing-down .fg-item{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-item-inner,.foogallery.fg-loaded-flip .fg-item-inner,.foogallery.fg-loaded-fly .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery .fg-caption{visibility:hidden;opacity:0;background-color:rgba(0,0,0,.6);color:#fff;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer}.foogallery .fg-caption a{text-decoration:none;color:#fff;border-bottom:1px solid #fff}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:5px}.foogallery .fg-caption-desc{padding:5px}.foogallery .fg-caption-title+.fg-caption-desc{padding-top:0}.foogallery.fg-caption-always .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1;text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-thumb:before{display:none}.foogallery.fg-hover-circle-plus .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{content:"";display:block;position:absolute;visibility:hidden;opacity:0;top:0;bottom:0;left:0;right:0;z-index:8;background:rgba(0,0,0,.5) no-repeat center center;background-size:32px 32px}.foogallery.fg-hover-circle-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-circle-plus .fg-thumb:focus:before,.foogallery.fg-hover-external .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-external .fg-thumb:focus:before,.foogallery.fg-hover-eye .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-eye .fg-thumb:focus:before,.foogallery.fg-hover-plus .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-plus .fg-thumb:focus:before,.foogallery.fg-hover-tint .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-tint .fg-thumb:focus:before,.foogallery.fg-hover-zoom .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom .fg-thumb:focus:before,.foogallery.fg-hover-zoom2 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom2 .fg-thumb:focus:before,.foogallery.fg-hover-zoom3 .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-zoom3 .fg-thumb:focus:before{visibility:visible;opacity:1}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-tint .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-caption-inner:before{content:"";display:inline-block;position:relative;width:32px;height:32px;margin:10px 0 5px 0;background:transparent no-repeat center center;background-size:32px 32px;vertical-align:middle}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external.png)}@media only screen and (-o-min-device-pixel-ratio:5/4),only screen and (-webkit-min-device-pixel-ratio:1.25),only screen and (min-device-pixel-ratio:1.25),only screen and (min-resolution:1.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@2x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@2x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@2x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@2x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@2x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@2x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@2x.png)}}@media only screen and (-o-min-device-pixel-ratio:9/4),only screen and (-webkit-min-device-pixel-ratio:2.25),only screen and (min-device-pixel-ratio:2.25),only screen and (min-resolution:2.25dppx){.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-thumb:before{background-image:url(../img/zoom@3x.png)}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-thumb:before{background-image:url(../img/zoom2@3x.png)}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-thumb:before{background-image:url(../img/zoom3@3x.png)}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-thumb:before{background-image:url(../img/plus@3x.png)}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-thumb:before{background-image:url(../img/circle-plus@3x.png)}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-thumb:before{background-image:url(../img/eye@3x.png)}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-thumb:before{background-image:url(../img/external@3x.png)}}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-caption,.foogallery.fg-hover-colorize .fg-image,.foogallery.fg-hover-colorize .fg-thumb:before,.foogallery.fg-hover-fade .fg-thumb:before,.foogallery.fg-hover-grayscale .fg-image,.foogallery.fg-hover-grayscale .fg-thumb:before,.foogallery.fg-hover-instant .fg-thumb:before,.foogallery.fg-hover-push .fg-thumb,.foogallery.fg-hover-scale .fg-item,.foogallery.fg-hover-scale .fg-thumb:before,.foogallery.fg-hover-slide-down .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-thumb:before{transition-timing-function:ease;transition-duration:.3s}.foogallery.fg-hover-colorize .fg-image{filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'saturate\' values=\'0\'/></filter></svg>#grayscale");filter:gray;-webkit-filter:grayscale(100%);-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{-webkit-filter:none;filter:none}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{-webkit-filter:none;filter:none;-webkit-transition-property:-webkit-filter;transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);filter:gray;opacity:1}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-thumb:before{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{display:block;left:0;top:0;bottom:0;transition-property:transform;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-thumb:before,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-thumb:before{transform:translateY(0) translateX(0)}.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-up .fg-loaded .fg-thumb:before{transform:translateY(100%)}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-thumb:before{transform:translateY(-100%)}.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-hover-slide-left .fg-loaded .fg-thumb:before{transform:translateX(100%)}.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-hover-slide-right .fg-loaded .fg-thumb:before{transform:translateX(-100%)}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fg-paging-container{display:block;padding:15px;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9e9e9e}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#8a8a8a}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#8a8a8a}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9e9e9e;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-default:after{content:'';display:block;clear:both}.fg-default .fg-item,.fg-default .fg-item-inner,.fg-default .fg-thumb{display:inline-block;vertical-align:top;max-width:100%}.fg-default .fg-image{border-radius:0;display:block;max-width:100%;height:auto;margin:0;padding:0}.fg-default .fg-image{vertical-align:top}.fg-default.fg-left{text-align:left}.fg-default.fg-center{text-align:center}.fg-default.fg-right{text-align:right}.fg-default.fg-gutter-5{padding-left:5px;margin-bottom:-5px}.fg-default.fg-gutter-5 .fg-item{margin-right:5px;margin-bottom:5px}.fg-default.fg-gutter-10{padding-left:10px;margin-bottom:-10px}.fg-default.fg-gutter-10 .fg-item{margin-right:10px;margin-bottom:10px}.fg-default.fg-gutter-15{padding-left:15px;margin-bottom:-15px}.fg-default.fg-gutter-15 .fg-item{margin-right:15px;margin-bottom:15px}.fg-default.fg-gutter-20{padding-left:20px;margin-bottom:-20px}.fg-default.fg-gutter-20 .fg-item{margin-right:20px;margin-bottom:20px}.fg-default.fg-gutter-25{padding-left:25px;margin-bottom:-25px}.fg-default.fg-gutter-25 .fg-item{margin-right:25px;margin-bottom:25px}.fg-masonry *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.foogallery.fg-masonry.fg-center{margin:0 auto}.fg-masonry .fg-thumb{display:block}.fg-masonry.fg-masonry-fixed .fg-thumb{display:inline-block}.fg-masonry.fg-masonry-fixed .fg-image{max-width:100%}.fg-masonry .fg-column-width{display:inline-block;visibility:hidden;height:0;border:solid 0 transparent}.fg-masonry.fg-masonry-2col .fg-image,.fg-masonry.fg-masonry-3col .fg-image,.fg-masonry.fg-masonry-4col .fg-image,.fg-masonry.fg-masonry-5col .fg-image{width:100%;height:auto;max-width:100%}.fg-masonry .fg-item{line-height:0;font-size:0}.fg-masonry.fg-masonry-2col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-2col .fg-column-width{width:49%}.fg-masonry.fg-masonry-2col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-3col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-3col .fg-column-width{width:32%}.fg-masonry.fg-masonry-3col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-4col .fg-item{margin-bottom:1%;width:24%}.fg-masonry.fg-masonry-4col .fg-column-width{width:24%}.fg-masonry.fg-masonry-4col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item{margin-bottom:3%;width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width{width:22%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:19%}.fg-masonry.fg-masonry-5col .fg-column-width{width:19%}.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:17%}.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}@media screen and (max-width:720px){.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:32%}.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:32%}.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:33%}.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:30%}.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:480px){.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:49%}.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:49%}.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:1%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:47%}.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:320px){.fg-masonry.fg-masonry-2col .fg-item,.fg-masonry.fg-masonry-3col .fg-item,.fg-masonry.fg-masonry-4col .fg-item,.fg-masonry.fg-masonry-5col .fg-item{margin-bottom:1%;width:100%}.fg-masonry.fg-masonry-2col .fg-column-width,.fg-masonry.fg-masonry-3col .fg-column-width,.fg-masonry.fg-masonry-4col .fg-column-width,.fg-masonry.fg-masonry-5col .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col .fg-gutter-width,.fg-masonry.fg-masonry-3col .fg-gutter-width,.fg-masonry.fg-masonry-4col .fg-gutter-width,.fg-masonry.fg-masonry-5col .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-item{margin-bottom:0;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-item,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-item{margin-bottom:3%;width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-column-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-column-width{width:100%}.fg-masonry.fg-masonry-2col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-3col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-4col.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-masonry-5col.fg-gutter-large .fg-gutter-width{width:0}}.foogallery.fg-border-thin .fg-column-width{border-width:5px}.foogallery.fg-border-medium .fg-column-width{border-width:10px}.foogallery.fg-border-thick .fg-column-width{border-width:15px}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner{display:block;position:relative;max-height:none;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-masonry.fg-captions-bottom .fg-caption-desc,.fg-masonry.fg-captions-bottom .fg-caption-title{text-align:left}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption,.fg-masonry.fg-captions-bottom.fg-light .fg-caption{color:#828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{color:#222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{color:#fff}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-masonry.fg-captions-bottom .fg-caption{border-width:10px}.fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc{margin-top:5px}.fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption{border-width:10px 5px 5px 5px}.fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption{border-width:15px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-justified{box-sizing:border-box;position:relative}.foogallery.fg-justified .fg-image,.foogallery.fg-justified .fg-item,.foogallery.fg-justified .fg-item-inner,.foogallery.fg-justified .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0}.fg-justified .fg-item{visibility:visible;position:absolute}.fg-justified .fg-item-inner{position:relative;width:100%;height:100%}.fg-justified .fg-thumb{position:relative;overflow:hidden}.fg-justified .fg-image{z-index:1}.fg-justified .fg-item.fg-positioned .fg-thumb{width:100%;height:100%}.fg-justified .fg-item.fg-positioned .fg-image{width:100%;height:auto;min-height:100%}.fg-simple_portfolio{box-sizing:border-box;position:relative;font-size:16px;margin:0 auto;padding:0;width:100%}.fg-simple_portfolio .fg-item{position:absolute;display:inline-block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-image,.fg-simple_portfolio .fg-item-inner,.fg-simple_portfolio .fg-thumb{display:block;margin:0;padding:0;outline:0}.fg-simple_portfolio .fg-item-inner{position:relative;width:100%;height:100%}.fg-simple_portfolio .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0;border:none;outline:0;position:relative;overflow:hidden}.fg-simple_portfolio .fg-item.fg-positioned .fg-image{width:100%;height:auto}.fg-simple_portfolio .fg-image{z-index:1}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent}.foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner{display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-thumb:before{display:block}.foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-simple_portfolio .fg-caption-title{text-align:left}.fg-simple_portfolio .fg-caption-desc{text-align:left}.fg-simple_portfolio.fg-dark .fg-caption,.fg-simple_portfolio.fg-light .fg-caption{color:#828282}.fg-simple_portfolio.fg-dark .fg-caption a,.fg-simple_portfolio.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-simple_portfolio.fg-dark .fg-caption a:hover,.fg-simple_portfolio.fg-light .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-light .fg-caption-title,.fg-simple_portfolio.fg-light .fg-caption-title a{color:#222}.fg-simple_portfolio.fg-dark .fg-caption-title,.fg-simple_portfolio.fg-dark .fg-caption-title a{color:#fff}.fg-simple_portfolio.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-simple_portfolio.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-simple_portfolio.fg-captions-top .fg-item.fg-positioned .fg-thumb{position:absolute;bottom:0;left:0}.fg-simple_portfolio .fg-caption{border-width:0}.fg-simple_portfolio .fg-caption-title+.fg-caption-desc{margin-top:5px}.fg-simple_portfolio.fg-border-thin .fg-caption{border-width:10px 5px 5px 5px}.fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption{border-width:5px 5px 10px 5px}.fg-simple_portfolio.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.fg-simple_portfolio.fg-border-thick .fg-caption{border-width:15px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 15px 0}.fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.foogallery.fg-preset.fg-polaroid .fg-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .35s,background-color .65s;transition:transform .35s,background-color .65s}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1){-webkit-transform:rotate(3deg);transform:rotate(3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n){-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n){-webkit-transform:rotate(1deg);transform:rotate(1deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n){-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}.foogallery.fg-preset.fg-polaroid .fg-item:hover{-webkit-transform:rotate(0);transform:rotate(0)}.foogallery.fg-preset.fg-polaroid .fg-caption{position:relative;width:auto;font-family:"Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.foogallery.fg-preset.fg-polaroid .fg-caption-inner,.foogallery.fg-preset.fg-polaroid .fg-caption-title{position:relative;width:auto}.foogallery.fg-preset.fg-polaroid .fg-caption-title{text-align:center}.foogallery.fg-preset.fg-polaroid .fg-caption-desc{display:none}.foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title,.foogallery.fg-preset.fg-polaroid .fg-caption-title{color:#333}.foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title{color:#fff}.foogallery.fg-preset.fg-polaroid .fg-caption{border-style:solid;border-color:transparent;border-width:10px}.foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc{margin-top:5px}.foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption{border-width:10px 5px 5px 5px}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption{border-width:5px 5px 10px 5px}.foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption{border-width:10px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption{border-width:15px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 15px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-image-viewer{display:block;font-family:'Open Sans','Helvetica Neue',Arial,sans-serif}.fg-image-viewer.fg-left{text-align:left}.fg-image-viewer.fg-center{text-align:center}.fg-image-viewer.fg-right{text-align:right}.fiv-inner{position:relative;display:inline-block;max-width:100%;overflow:hidden;z-index:6}.fiv-inner .fiv-inner-container{position:relative;overflow:hidden;max-width:100%;border-style:solid;border-width:0;border-bottom-width:4px;z-index:5}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited{position:relative;display:block;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item{position:relative;visibility:visible;opacity:1;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img{display:block;max-width:100%;height:auto;border:none;outline:0;text-decoration:none}.fg-image-viewer .fiv-inner .fiv-ctrls{display:block;text-align:center;font-size:14px;border-style:solid;line-height:34px}.fg-image-viewer .fiv-inner .fiv-ctrls:after{content:'';display:block;clear:both}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count{display:inline-block;font-weight:400;margin:0}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;min-width:80px;position:relative;overflow:hidden;transition:background-color .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{display:block;position:absolute;font-size:24px;line-height:30px;top:0;left:0;width:100%;transform:translateY(0);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before{transform:translateY(-100%)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span{display:block;width:100%;transform:translateY(100%);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span{transform:translateY(0)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:left}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2190'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:right}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2192'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span{margin:0 4px}/*!* Theme - Default (Light) *!*//*!* Theme - Dark *!*/.foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption{padding:0;border:none;background:#000;background:-moz-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:-webkit-linear-gradient(left,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%);background:linear-gradient(to right,rgba(0,0,0,.8) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,0) 100%)}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc{padding:0 10px 10px 10px}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-light .fiv-inner .fiv-inner-container{background-color:#fff;color:#333;border-color:#fff}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#f2f2f2}.fg-image-viewer.fg-light .fiv-next,.fg-image-viewer.fg-light .fiv-prev{box-shadow:inset 0 0 0 1px #ddd}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container{background-color:#333;color:#fff;border-color:#333}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#444}.fg-image-viewer.fg-dark .fiv-next,.fg-image-viewer.fg-dark .fiv-prev{box-shadow:inset 0 0 0 1px #222}.foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin .fg-item-inner{border-width:0}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container{border-width:4px}.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container{border-width:10px}.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container{border-width:16px}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls{border-top-width:1px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-round-small .fiv-inner{border-radius:5px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-round-medium .fiv-inner{border-radius:10px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-round-large .fiv-inner{border-radius:15px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-full .fiv-inner,.foogallery.fg-image-viewer.fg-round-full .fiv-next,.foogallery.fg-image-viewer.fg-round-full .fiv-prev{border-radius:50%}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner{box-shadow:none}.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-thumbnail,.foogallery.fg-thumbnail.fg-center{text-align:center}.foogallery.fg-thumbnail.fg-left{text-align:left}.foogallery.fg-thumbnail.fg-right{text-align:right}.foogallery.fg-thumbnail.fg-float-left{float:left;width:auto}.foogallery.fg-thumbnail.fg-float-right{float:right;width:auto}.foogallery.fg-thumbnail .fg-item{display:inline-block;vertical-align:top;max-width:100%}.foogallery.fg-thumbnail .fg-image{max-width:100%}.foogallery.fg-thumbnail .fg-st-hidden{display:none}
extensions/default-templates/shared/js/foogallery.js CHANGED
@@ -58,9 +58,9 @@
58
);
59
/*!
60
* FooGallery.utils - Contains common utility methods and classes used in our plugins.
61
- * @version 0.0.6
62
* @link https://github.com/steveush/foo-utils#readme
63
- * @copyright Steve Usher 2017
64
* @license Released under the GPL-3.0 license.
65
*/
66
/**
@@ -111,7 +111,7 @@
111
* @name version
112
* @type {string}
113
*/
114
- version: '0.0.6',
115
};
116
117
/**
@@ -207,7 +207,7 @@
207
})(jQuery);
208
(function ($, _){
209
// only register methods if this version is the current version
210
- if (_.version !== '0.0.6') return;
211
212
/**
213
* @summary Contains common type checking utility methods.
@@ -561,7 +561,7 @@
561
);
562
(function($, _, _is){
563
// only register methods if this version is the current version
564
- if (_.version !== '0.0.6') return;
565
566
/**
567
* @memberof FooGallery.utils
@@ -1096,7 +1096,7 @@
1096
);
1097
(function(_, _is){
1098
// only register methods if this version is the current version
1099
- if (_.version !== '0.0.6') return;
1100
1101
/**
1102
* @summary Contains common url utility methods.
@@ -1182,7 +1182,7 @@
1182
* console.log( _url.param( search, "v", "2" ) ); // => "?wmode=opaque&autoplay=1&v=2"
1183
*/
1184
_.url.param = function(search, key, value){
1185
- if (!_is.string(search) || _is.empty(search) || !_is.string(key) || _is.empty(key)) return search;
1186
var regex, match, result, param;
1187
if (_is.undef(value)){
1188
regex = new RegExp('[?|&]' + key + '=([^&;]+?)(&|#|;|$)'); // regex to match the key and it's value but only capture the value
@@ -1199,7 +1199,7 @@
1199
result = search.replace(regex, '$1' + param); // replace any existing instance of the key with the new value
1200
// If nothing was replaced, then add the new param to the end
1201
if (result === search && !regex.test(result)) { // if no replacement occurred and the parameter is not currently in the result then add it
1202
- result += '&' + param;
1203
}
1204
}
1205
return result;
@@ -1231,7 +1231,7 @@
1231
);
1232
(function (_, _is, _fn) {
1233
// only register methods if this version is the current version
1234
- if (_.version !== '0.0.6') return;
1235
1236
/**
1237
* @summary Contains common string utility methods.
@@ -1546,7 +1546,7 @@
1546
);
1547
(function($, _, _is, _fn, _str){
1548
// only register methods if this version is the current version
1549
- if (_.version !== '0.0.6') return;
1550
1551
/**
1552
* @summary Contains common object utility methods.
@@ -1629,12 +1629,12 @@
1629
* console.log( _obj.merge( target, object ) ); // => {"name": "My Object", "enabled": true, "arr": [4,5,6], "something": 123}
1630
*/
1631
_.obj.merge = function(target, object){
1632
- target = _is.object(target) ? target : {};
1633
- object = _is.object(object) ? object : {};
1634
for (var prop in object) {
1635
if (object.hasOwnProperty(prop)) {
1636
- if (_is.object(object[prop])) {
1637
- target[prop] = _is.object(target[prop]) ? target[prop] : {};
1638
_.obj.merge(target[prop], object[prop]);
1639
} else if (_is.array(object[prop])) {
1640
target[prop] = object[prop].slice();
@@ -1878,7 +1878,7 @@
1878
);
1879
(function($, _, _is){
1880
// only register methods if this version is the current version
1881
- if (_.version !== '0.0.6') return;
1882
1883
// any methods that have dependencies but don't fall into a specific subset or namespace can be added here
1884
@@ -1977,7 +1977,7 @@
1977
);
1978
(function($, _, _is){
1979
// only register methods if this version is the current version
1980
- if (_.version !== '0.0.6') return;
1981
1982
/**
1983
* @summary Contains common utility methods and members for the CSS transition property.
@@ -2072,12 +2072,19 @@
2072
return def;
2073
};
2074
2075
/**
2076
* @summary Start a transition by toggling the supplied `className` on the `$element`.
2077
* @memberof FooGallery.utils.transition
2078
* @function start
2079
* @param {jQuery} $element - The jQuery element to start the transition on.
2080
- * @param {string} className - One or more class names (separated by spaces) to be toggled that starts the transition.
2081
* @param {boolean} [state] - A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed.
2082
* @param {number} [timeout] - The maximum time, in milliseconds, to wait for the `transitionend` event to be raised. If not provided this will be automatically set to the elements `transition-duration` property plus an extra 50 milliseconds.
2083
* @returns {Promise}
@@ -2086,7 +2093,7 @@
2086
* The last parameter `timeout` is used to create a timer that behaves as a safety net in case the `transitionend` event is never raised and ensures the deferred returned by this method is resolved or rejected within a specified time.
2087
* @see {@link https://developer.mozilla.org/en/docs/Web/CSS/transition-duration|transition-duration - CSS | MDN} for more information on the `transition-duration` CSS property.
2088
*/
2089
- _.transition.start = function($element, className, state, timeout){
2090
var deferred = $.Deferred();
2091
2092
$element = $element.first();
@@ -2121,7 +2128,11 @@
2121
2122
setTimeout(function(){
2123
// This is executed inside of a 20ms timeout to allow the binding of the event handler above to actually happen before the class is toggled
2124
- $element.toggleClass(className, state);
2125
if (!_.transition.supported){
2126
// If the browser doesn't support transitions then just resolve the deferred
2127
deferred.resolve();
@@ -2139,7 +2150,7 @@
2139
);
2140
(function ($, _, _is, _obj, _fn) {
2141
// only register methods if this version is the current version
2142
- if (_.version !== '0.0.6') return;
2143
2144
/**
2145
* @summary A base class providing some helper methods for prototypal inheritance.
@@ -2279,7 +2290,7 @@
2279
);
2280
(function($, _, _is){
2281
// only register methods if this version is the current version
2282
- if (_.version !== '0.0.6') return;
2283
2284
_.Bounds = _.Class.extend(/** @lends FooGallery.utils.Bounds */{
2285
/**
@@ -2381,7 +2392,7 @@
2381
);
2382
(function($, _, _is, _fn){
2383
// only register methods if this version is the current version
2384
- if (_.version !== '0.0.6') return;
2385
2386
_.Factory = _.Class.extend(/** @lends FooGallery.utils.Factory */{
2387
/**
@@ -2705,7 +2716,7 @@
2705
);
2706
(function(_, _fn, _str){
2707
// only register methods if this version is the current version
2708
- if (_.version !== '0.0.6') return;
2709
2710
// this is done to handle Content Security in Chrome and other browsers blocking access to the localStorage object under certain configurations.
2711
// see: https://www.chromium.org/for-testers/bug-reporting-guidelines/uncaught-securityerror-failed-to-read-the-localstorage-property-from-window-access-is-denied-for-this-document
@@ -2812,7 +2823,7 @@
2812
);
2813
(function($, _, _is){
2814
// only register methods if this version is the current version
2815
- if (_.version !== '0.0.6') return;
2816
2817
_.Throttle = _.Class.extend(/** @lends FooGallery.utils.Throttle */{
2818
/**
@@ -2924,7 +2935,7 @@
2924
FooGallery.utils,
2925
FooGallery.utils.is
2926
);
2927
- (function($, _, _utils, _is, _fn){
2928
2929
_.debug = new _utils.Debugger("__FooGallery__");
2930
@@ -2935,20 +2946,21 @@
2935
* @param {(string|string[]|object)} classes - A single space delimited string of CSS class names to convert or an array of them with each item being included in the selector using the OR (`,`) syntax as a separator. If an object is supplied the result will be an object with the same property names but the values converted to selectors.
2936
* @returns {(object|string)}
2937
*/
2938
- _utils.selectify = function(classes){
2939
- if (_is.hash(classes)){
2940
var result = {}, selector;
2941
- for (var name in classes){
2942
if (!classes.hasOwnProperty(name)) continue;
2943
- if (selector = _utils.selectify(classes[name])){
2944
result[name] = selector;
2945
}
2946
}
2947
return result;
2948
}
2949
- if (_is.string(classes) || _is.array(classes)){
2950
if (_is.string(classes)) classes = [classes];
2951
- return $.map(classes, function(str){
2952
return _is.string(str) ? "." + str.split(/\s/g).join(".") : null;
2953
}).join(",");
2954
}
@@ -2982,17 +2994,17 @@
2982
*/
2983
_.dataItem = "__FooGalleryItem__";
2984
2985
- _.init = function(options, element){
2986
return _.template.make(options, element).initialize();
2987
};
2988
2989
- _.initAll = function(options){
2990
- return _fn.when($(".foogallery").map(function(i, element){
2991
return _.init(options, element);
2992
}).get());
2993
};
2994
2995
- _.parseSrc = function(src, srcWidth, srcHeight, srcset, renderWidth, renderHeight){
2996
if (!_is.string(src)) return null;
2997
// if there is no srcset just return the src
2998
if (!_is.string(srcset)) return src;
@@ -3020,8 +3032,8 @@
3020
3021
// get the current viewport info and use it to determine the correct src to load
3022
var dpr = window.devicePixelRatio || 1,
3023
- area = {w: renderWidth * dpr, h: renderHeight * dpr, x: dpr},
3024
- property;
3025
3026
// first check each of the viewport properties against the max values of the same properties in our src array
3027
// only src's with a property greater than the viewport or equal to the max are kept
@@ -3068,15 +3080,15 @@
3068
* <div class="fg-item-inner">
3069
* <a class="fg-thumb" href="[item.href]">
3070
* <img class="fg-image" width="[item.width]" height="[item.height]"
3071
- * title="[item.title]" alt="[item.description]"
3072
- * data-src="[item.src]"
3073
- * data-srcset="[item.srcset]" />
3074
* <!-- Optional caption markup -->
3075
* <div class="fg-caption">
3076
- * <div class="fg-caption-inner">
3077
- * <div class="fg-caption-title">[item.title]</div>
3078
- * <div class="fg-caption-desc">[item.description]</div>
3079
- * </div>
3080
* </div>
3081
* </a>
3082
* </div>
@@ -3084,17 +3096,17 @@
3084
* <!-- Any number of additional items -->
3085
* </div>
3086
* <script>
3087
- * jQuery(function($){
3088
* $("#gallery-1").foogallery();
3089
* });
3090
* </script>
3091
* @example {@caption Options can be supplied directly to the `.foogallery()` method or by supplying them using the `data-foogallery` attribute. If supplied using the attribute the value must follow [valid JSON syntax](http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example) including quoted property names. If the same option is supplied in both locations as it is below, the value from the attribute overrides the value supplied to the method, in this case `lazy` would be `true`.}{@lang html}
3092
* <!-- Supplying the options using the attribute -->
3093
* <div id="gallery-1" class="foogallery fg-responsive" data-foogallery='{"lazy": true}'>
3094
- * <!-- Items -->
3095
* </div>
3096
* <script>
3097
- * jQuery(function($){
3098
* // Supply the options directly to the method
3099
* $("#gallery-1").foogallery({
3100
* lazy: false
@@ -3102,12 +3114,12 @@
3102
* });
3103
* </script>
3104
*/
3105
- $.fn.foogallery = function(options, ready){
3106
- return this.filter(".foogallery").each(function(i, element){
3107
- if (_is.string(options)){
3108
var template = $.data(element, _.dataTemplate);
3109
- if (template instanceof _.Template){
3110
- switch (options){
3111
case "layout":
3112
template.layout();
3113
return;
@@ -3117,8 +3129,8 @@
3117
}
3118
}
3119
} else {
3120
- _.template.make(options, element).initialize().then(function(template){
3121
- if (_is.fn(ready)){
3122
ready(template);
3123
}
3124
});
@@ -3139,13 +3151,13 @@
3139
*/
3140
3141
})(
3142
- FooGallery.$,
3143
- FooGallery,
3144
- FooGallery.utils,
3145
- FooGallery.utils.is,
3146
- FooGallery.utils.fn
3147
);
3148
- (function($, _, _utils, _is, _fn, _obj){
3149
3150
_.TemplateFactory = _utils.Factory.extend(/** @lends FooGallery.TemplateFactory */{
3151
/**
@@ -3157,7 +3169,7 @@
3157
* @borrows FooGallery.utils.Class.extend as extend
3158
* @borrows FooGallery.utils.Class.override as override
3159
*/
3160
- construct: function(){
3161
/**
3162
* @summary An object containing all registered galleries.
3163
* @memberof FooGallery.TemplateFactory#
@@ -3195,9 +3207,9 @@
3195
* @param {number} [priority=0] - This determines the index for the class when using either the {@link FooGallery.TemplateFactory#load|load} or {@link FooGallery.TemplateFactory#names|names} methods, a higher value equals a lower index.
3196
* @returns {boolean} `true` if the `klass` was successfully registered.
3197
*/
3198
- register: function(name, template, options, classes, il8n, priority){
3199
var self = this, result = self._super(name, template, priority);
3200
- if (result){
3201
var reg = self.registered;
3202
reg[name].opt = _is.hash(options) ? options : {};
3203
reg[name].cls = _is.hash(classes) ? classes : {};
@@ -3213,7 +3225,7 @@
3213
* @param {(jQuery|HTMLElement|string)} [element] - The jQuery object, HTMLElement or selector of the template element to create. If not supplied the {@link FooGallery~Options#type|type} options' value is used.
3214
* @returns {FooGallery.Template}
3215
*/
3216
- make: function(options, element){
3217
element = _is.jq(element) ? element : $(element);
3218
options = _obj.extend({}, options, element.data("foogallery"));
3219
var self = this, type = self.type(options, element);
@@ -3221,10 +3233,10 @@
3221
options = self.options(type, options);
3222
return self._super(type, options, element);
3223
},
3224
- type: function(options, element){
3225
element = _is.jq(element) ? element : $(element);
3226
var self = this, type = _is.hash(options) && _is.hash(options) && _is.string(options.type) && self.contains(options.type) ? options.type : "core";
3227
- if (type === "core" && element.length > 0){
3228
var reg = self.registered, names = self.names(true);
3229
for (var i = 0, l = names.length; i < l; i++) {
3230
if (!reg.hasOwnProperty(names[i])) continue;
@@ -3239,17 +3251,17 @@
3239
}
3240
return type;
3241
},
3242
- configure: function(name, options, classes, il8n){
3243
var self = this;
3244
- if (self.contains(name)){
3245
var reg = self.registered;
3246
_obj.extend(reg[name].opt, options);
3247
_obj.extend(reg[name].cls, classes);
3248
_obj.extend(reg[name].il8n, il8n);
3249
}
3250
},
3251
- options: function(name, options){
3252
- options = _obj.extend({}, options);
3253
var self = this, reg = self.registered,
3254
def = reg["core"].opt,
3255
cls = reg["core"].cls,
@@ -3257,15 +3269,17 @@
3257
3258
if (!_is.hash(options.cls)) options.cls = {};
3259
if (!_is.hash(options.il8n)) options.il8n = {};
3260
- options = _.paging.merge(options);
3261
- if (name !== "core" && self.contains(name)){
3262
options = _obj.extend({}, def, reg[name].opt, options);
3263
- options.cls = _obj.extend(options.cls, cls, reg[name].cls, options.cls);
3264
- options.il8n = _obj.extend(options.il8n, il8n, reg[name].il8n, options.il8n);
3265
} else {
3266
options = _obj.extend({}, def, options);
3267
- options.cls = _obj.extend(options.cls, cls, options.cls);
3268
- options.il8n = _obj.extend(options.il8n, il8n, options.il8n);
3269
}
3270
return options;
3271
}
@@ -3361,8 +3375,8 @@
3361
def_cls = reg["default"].cls,
3362
def_il8n = reg["default"].il8n,
3363
opt = _is.hash(options.paging) ? options.paging : {},
3364
- cls = _is.hash(options.cls) && _is.hash(options.cls.paging) ? options.cls.paging : {},
3365
- il8n = _is.hash(options.il8n) && _is.hash(options.il8n.paging) ? options.il8n.paging : {};
3366
3367
if (!_is.hash(options.cls)) options.cls = {};
3368
if (!_is.hash(options.il8n)) options.il8n = {};
@@ -3431,7 +3445,9 @@
3431
FooGallery.utils.fn,
3432
FooGallery.utils.obj
3433
);
3434
- (function($, _, _utils, _is, _fn, _str){
3435
3436
_.Template = _utils.Class.extend(/** @lends FooGallery.Template */{
3437
/**
@@ -3444,8 +3460,15 @@
3444
* @borrows FooGallery.utils.Class.extend as extend
3445
* @borrows FooGallery.utils.Class.override as override
3446
*/
3447
- construct: function(options, element){
3448
var self = this;
3449
/**
3450
* @summary The jQuery object for the template container.
3451
* @memberof FooGallery.Template#
@@ -3474,13 +3497,6 @@
3474
* @type {string}
3475
*/
3476
self.id = self.$el.prop("id") || options.id;
3477
- /**
3478
- * @summary Whether or not the template created its' own container element.
3479
- * @memberof FooGallery.Template#
3480
- * @name createdSelf
3481
- * @type {boolean}
3482
- */
3483
- self.createdSelf = false;
3484
/**
3485
* @summary The CSS classes for the template.
3486
* @memberof FooGallery.Template#
@@ -3515,7 +3531,14 @@
3515
* @name pages
3516
* @type {?FooGallery.Paging}
3517
*/
3518
- self.pages = _.paging.make(options.paging.type, self);
3519
/**
3520
* @summary The state manager for the template.
3521
* @memberof FooGallery.Template#
@@ -3535,6 +3558,12 @@
3535
self.initialized = false;
3536
self.destroying = false;
3537
self.destroyed = false;
3538
},
3539
3540
// ################
@@ -3553,39 +3582,56 @@
3553
* @fires FooGallery.Template~"post-init.foogallery"
3554
* @fires FooGallery.Template~"ready.foogallery"
3555
*/
3556
- initialize: function(parent){
3557
var self = this;
3558
if (_is.promise(self._initialize)) return self._initialize;
3559
parent = _is.jq(parent) ? parent : $(parent);
3560
- return self._initialize = $.Deferred(function(def){
3561
self.initializing = true;
3562
- if (parent.length === 0 && self.$el.parent().length === 0){
3563
def.reject("A parent element is required.");
3564
return;
3565
}
3566
- if (self.$el.length === 0){
3567
self.$el = self.create();
3568
- self.createdSelf = true;
3569
}
3570
- if (parent.length > 0){
3571
self.$el.appendTo(parent);
3572
}
3573
var queue = $.Deferred(), promise = queue.promise(), existing;
3574
- if (self.$el.length > 0 && (existing = self.$el.data(_.dataTemplate)) instanceof _.Template){
3575
- promise = promise.then(function(){
3576
- return existing.destroy().then(function(){
3577
self.$el.data(_.dataTemplate, self);
3578
});
3579
});
3580
} else {
3581
self.$el.data(_.dataTemplate, self);
3582
}
3583
- promise.then(function(){
3584
if (self.destroying) return _fn.rejectWith("destroy in progress");
3585
// at this point we have our container element free of pre-existing instances so let's bind any event listeners supplied by the .on option
3586
- if (!_is.empty(self.opt.on)){
3587
self.$el.on(self.opt.on);
3588
}
3589
3590
/**
3591
* @summary Raised before the template is fully initialized.
@@ -3617,17 +3663,17 @@
3617
*/
3618
var e = self.raise("pre-init");
3619
if (e.isDefaultPrevented()) return _fn.rejectWith("pre-init default prevented");
3620
- }).then(function(){
3621
if (self.destroying) return _fn.rejectWith("destroy in progress");
3622
// checks the delay option and if it is greater than 0 waits for that amount of time before continuing
3623
if (self.opt.delay <= 0) return _fn.resolved;
3624
- return $.Deferred(function(wait){
3625
self._delay = setTimeout(function () {
3626
self._delay = null;
3627
wait.resolve();
3628
}, self.opt.delay);
3629
}).promise();
3630
- }).then(function(){
3631
if (self.destroying) return _fn.rejectWith("destroy in progress");
3632
/**
3633
* @summary Raised before the template is initialized but after any pre-initialization work is complete.
@@ -3673,7 +3719,7 @@
3673
var e = self.raise("init");
3674
if (e.isDefaultPrevented()) return _fn.rejectWith("init default prevented");
3675
return self.items.fetch();
3676
- }).then(function(){
3677
if (self.destroying) return _fn.rejectWith("destroy in progress");
3678
/**
3679
* @summary Raised after the template is initialized but before any post-initialization work is complete.
@@ -3720,9 +3766,9 @@
3720
if (e.isDefaultPrevented()) return _fn.rejectWith("post-init default prevented");
3721
var state = self.state.parse();
3722
self.state.set(_is.empty(state) ? self.state.initial() : state);
3723
- $(window).on("scroll.foogallery", {self: self}, self.throttle(self.onWindowScroll, self.opt.throttle))
3724
- .on("popstate.foogallery", {self: self}, self.onWindowPopState);
3725
- }).then(function(){
3726
if (self.destroying) return _fn.rejectWith("destroy in progress");
3727
/**
3728
* @summary Raised after the template is fully initialized but before the first load occurs.
@@ -3742,7 +3788,7 @@
3742
*/
3743
self.raise("first-load");
3744
return self.loadAvailable();
3745
- }).then(function(){
3746
if (self.destroying) return _fn.rejectWith("destroy in progress");
3747
self.initializing = false;
3748
self.initialized = true;
@@ -3772,11 +3818,11 @@
3772
*/
3773
self.raise("ready");
3774
def.resolve(self);
3775
- }).fail(function(err){
3776
def.reject(err);
3777
});
3778
queue.resolve();
3779
- }).promise().fail(function(err){
3780
console.log("initialize failed", self, err);
3781
self.destroy();
3782
});
@@ -3791,10 +3837,20 @@
3791
* <div id="{options.id}" class="{options.cls.container} {options.classes}">
3792
* </div>
3793
*/
3794
- create: function(){
3795
var self = this;
3796
return $("<div/>", {"id": self.id, "class": self.cls.container}).addClass(self.opt.classes);
3797
},
3798
3799
// #############
3800
// ## Destroy ##
@@ -3808,13 +3864,13 @@
3808
* @description Once this method is called it can not be stopped and the template will be destroyed.
3809
* @fires FooGallery.Template~"destroy.foogallery"
3810
*/
3811
- destroy: function(){
3812
var self = this;
3813
if (self.destroyed) return _fn.resolved;
3814
self.destroying = true;
3815
- return $.Deferred(function(def){
3816
- if (self.initializing && _is.promise(self._initialize)){
3817
- self._initialize.always(function(){
3818
self.destroying = false;
3819
self._destroy();
3820
def.resolve();
@@ -3832,7 +3888,7 @@
3832
* @function _destroy
3833
* @private
3834
*/
3835
- _destroy: function(){
3836
var self = this;
3837
if (self.destroyed) return;
3838
/**
@@ -3851,12 +3907,12 @@
3851
* });
3852
*/
3853
self.raise("destroy");
3854
- $(window).off("popstate.foogallery", self.onWindowPopState)
3855
- .off("scroll.foogallery");
3856
self.state.destroy();
3857
if (self.pages) self.pages.destroy();
3858
self.items.destroy();
3859
- if (!_is.empty(self.opt.on)){
3860
self.$el.off(self.opt.on);
3861
}
3862
/**
@@ -3876,7 +3932,17 @@
3876
*/
3877
self.raise("destroyed");
3878
self.$el.removeData(_.dataTemplate);
3879
- if (self.createdSelf){
3880
self.$el.remove();
3881
}
3882
self.$el = self.state = self.items = self.pages = null;
@@ -3889,20 +3955,25 @@
3889
// ## Load Items ##
3890
// ################
3891
3892
/**
3893
* @summary Check if any available items need to be loaded and loads them.
3894
* @memberof FooGallery.Template#
3895
* @function loadAvailable
3896
* @returns {Promise<FooGallery.Item[]>} Resolves with an array of {@link FooGallery.Item|items} as the first argument. If no items are loaded this array is empty.
3897
*/
3898
- loadAvailable: function(){
3899
- var self = this, items;
3900
- if (self.pages){
3901
- items = self.pages.available();
3902
- } else {
3903
- items = self.items.available();
3904
- }
3905
- return self.items.load(items);
3906
},
3907
3908
/**
@@ -3911,11 +3982,11 @@
3911
* @function _check
3912
* @private
3913
*/
3914
- _check: function(delay){
3915
delay = _is.number(delay) ? delay : 0;
3916
var self = this;
3917
- setTimeout(function(){
3918
- if (self.initialized && (!self.destroying || !self.destroyed)){
3919
self.loadAvailable();
3920
}
3921
}, delay);
@@ -3944,20 +4015,20 @@
3944
if (!_is.string(eventName) || _is.empty(eventName)) return null;
3945
args = _is.array(args) ? args : [];
3946
var self = this,
3947
- name = eventName.split(".")[0],
3948
- listener = _str.camel("on-" + name),
3949
- event = $.Event(name + ".foogallery");
3950
args.unshift(self); // add self
3951
self.$el.trigger(event, args);
3952
_.debug.logf("{id}|{name}:", {id: self.id, name: name}, args);
3953
- if (_is.fn(self[listener])){
3954
args.unshift(event); // add event
3955
self[listener].apply(self.$el.get(0), args);
3956
}
3957
return event;
3958
},
3959
3960
- layout: function(){
3961
var self = this;
3962
if (self._initialize === null) return;
3963
/**
@@ -3987,9 +4058,9 @@
3987
* @param {number} wait - The number of milliseconds to wait before allowing execution.
3988
* @returns {Function}
3989
*/
3990
- throttle: function(fn, wait){
3991
var time = Date.now();
3992
- return function() {
3993
if ((time + wait - Date.now()) < 0) {
3994
var args = _fn.arg2arr(arguments);
3995
fn.apply(this, args);
@@ -4009,9 +4080,9 @@
4009
* @param {jQuery.Event} e - The jQuery.Event object for the event.
4010
* @private
4011
*/
4012
- onWindowPopState: function(e){
4013
var self = e.data.self, state = e.originalEvent.state;
4014
- if (!_is.empty(state) && state.id === self.id){
4015
self.state.set(state);
4016
self.loadAvailable();
4017
}
@@ -4023,7 +4094,7 @@
4023
* @param {jQuery.Event} e - The jQuery.Event object for the event.
4024
* @private
4025
*/
4026
- onWindowScroll: function(e){
4027
var self = e.data.self;
4028
self.loadAvailable();
4029
}
@@ -4045,9 +4116,7 @@
4045
template: {}
4046
}, {
4047
container: "foogallery"
4048
- }, {
4049
-
4050
- }, -100);
4051
4052
/**
4053
* @summary An object containing all the core template options.
@@ -4094,15 +4163,13 @@
4094
*/
4095
4096
})(
4097
- FooGallery.$,
4098
- FooGallery,
4099
- FooGallery.utils,
4100
- FooGallery.utils.is,
4101
- FooGallery.utils.fn,
4102
- FooGallery.utils.str
4103
);
4104
-
4105
-
4106
(function(_, _utils){
4107
4108
_.Component = _utils.Class.extend(/** @lend FooGallery.Component */{
@@ -4365,6 +4432,7 @@
4365
*/
4366
initial: function(){
4367
var self = this, tmpl = self.tmpl, state = {};
4368
if (tmpl.pages && tmpl.pages.current > 1) state.p = tmpl.pages.current;
4369
return state;
4370
},
@@ -4379,6 +4447,9 @@
4379
get: function(item){
4380
var self = this, tmpl = self.tmpl, state = {};
4381
if (item instanceof _.Item) state.i = item.id;
4382
if (tmpl.pages && tmpl.pages.isValid(tmpl.pages.current)){
4383
state.p = tmpl.pages.current;
4384
}
@@ -4396,6 +4467,11 @@
4396
if (_is.hash(state)){
4397
tmpl.items.reset();
4398
var item = tmpl.items.get(state.i);
4399
if (tmpl.pages){
4400
tmpl.pages.rebuild();
4401
var page = tmpl.pages.number(state.p);
@@ -4449,6 +4525,7 @@
4449
* @summary An object used to store the state of a template.
4450
* @typedef {object} FooGallery~State
4451
* @property {number} [p] - The current page number.
4452
* @property {?string} [i] - The currently selected item.
4453
*/
4454
@@ -4458,7 +4535,7 @@
4458
FooGallery.utils.is,
4459
FooGallery.utils.str
4460
);
4461
- (function($, _, _utils, _is, _fn, _obj){
4462
4463
_.Item = _.Component.extend(/** @lends FooGallery.Item */{
4464
/**
@@ -4471,7 +4548,7 @@
4471
* @borrows FooGallery.utils.Class.extend as extend
4472
* @borrows FooGallery.utils.Class.override as override
4473
*/
4474
- construct: function(template, options){
4475
var self = this;
4476
/**
4477
* @ignore
@@ -4482,6 +4559,8 @@
4482
self.cls = template.cls.item;
4483
self.il8n = template.il8n.item;
4484
self.sel = template.sel.item;
4485
/**
4486
* @summary Whether or not the items' elements are appended to the template.
4487
* @memberof FooGallery.Item#
@@ -4561,110 +4640,114 @@
4561
*/
4562
self.$caption = null;
4563
4564
- options = _obj.extend({}, template.opt.item, options);
4565
-
4566
/**
4567
* @memberof FooGallery.Item#
4568
* @name id
4569
* @type {string}
4570
*/
4571
- self.id = options.id;
4572
/**
4573
* @memberof FooGallery.Item#
4574
* @name href
4575
* @type {string}
4576
*/
4577
- self.href = options.href;
4578
/**
4579
* @memberof FooGallery.Item#
4580
* @name src
4581
* @type {string}
4582
*/
4583
- self.src = options.src;
4584
/**
4585
* @memberof FooGallery.Item#
4586
* @name srcset
4587
* @type {string}
4588
*/
4589
- self.srcset = options.srcset;
4590
/**
4591
* @memberof FooGallery.Item#
4592
* @name width
4593
* @type {number}
4594
*/
4595
- self.width = options.width;
4596
/**
4597
* @memberof FooGallery.Item#
4598
* @name height
4599
* @type {number}
4600
*/
4601
- self.height = options.height;
4602
/**
4603
* @memberof FooGallery.Item#
4604
* @name title
4605
* @type {string}
4606
*/
4607
- self.title = options.title;
4608
/**
4609
* @memberof FooGallery.Item#
4610
* @name alt
4611
* @type {string}
4612
*/
4613
- self.alt = options.alt;
4614
/**
4615
* @memberof FooGallery.Item#
4616
* @name caption
4617
* @type {string}
4618
*/
4619
- self.caption = _is.empty(options.caption) ? self.title : options.caption;
4620
/**
4621
* @memberof FooGallery.Item#
4622
* @name description
4623
* @type {string}
4624
*/
4625
- self.description = _is.empty(options.description) ? self.alt : options.description;
4626
/**
4627
* @memberof FooGallery.Item#
4628
* @name attrItem
4629
* @type {FooGallery.Item~Attributes}
4630
*/
4631
- self.attr = options.attr;
4632
/**
4633
* @memberof FooGallery.Item#
4634
* @name tags
4635
* @type {string[]}
4636
*/
4637
- self.tags = options.tags;
4638
/**
4639
* @memberof FooGallery.Item#
4640
* @name maxWidth
4641
* @type {?FooGallery.Item~maxWidthCallback}
4642
*/
4643
- self.maxWidth = options.maxWidth;
4644
/**
4645
* @memberof FooGallery.Item#
4646
* @name maxCaptionLength
4647
* @type {number}
4648
*/
4649
- self.maxCaptionLength = options.maxCaptionLength;
4650
/**
4651
* @memberof FooGallery.Item#
4652
* @name maxDescriptionLength
4653
* @type {number}
4654
*/
4655
- self.maxDescriptionLength = options.maxDescriptionLength;
4656
/**
4657
* @memberof FooGallery.Item#
4658
* @name showCaptionTitle
4659
* @type {boolean}
4660
*/
4661
- self.showCaptionTitle = options.showCaptionTitle;
4662
/**
4663
* @memberof FooGallery.Item#
4664
* @name showCaptionDescription
4665
* @type {boolean}
4666
*/
4667
- self.showCaptionDescription = options.showCaptionDescription;
4668
/**
4669
* @summary The cached result of the last call to the {@link FooGallery.Item#getThumbUrl|getThumbUrl} method.
4670
* @memberof FooGallery.Item#
@@ -4673,6 +4756,14 @@
4673
* @private
4674
*/
4675
self._thumbUrl = null;
4676
/**
4677
* @summary This property is used to store the promise created when loading an item for the first time.
4678
* @memberof FooGallery.Item#
@@ -4681,13 +4772,26 @@
4681
* @private
4682
*/
4683
self._load = null;
4684
},
4685
/**
4686