PluginProbe
Filter Gallery / 1.1.5
Filter Gallery v1.1.5
1.1.5 1.1.4 1.1.3 1.1.2 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8 0.0.9 0.1.0 0.1.1 0.1.2 0.1.3 0.1.4 0.1.5 0.1.6 0.1.7 0.1.8 0.1.9 0.2.0 All 28 releases
filter-gallery / admin / assets / css / ufg-frontend.css

ufg-frontend.css in Filter Gallery 1.1.5, at admin/assets/css/ufg-frontend.css

488 lines 11.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Filter Gallery Pro - Frontend Stylesheet
3 * Custom prefixed CSS replacing Bootstrap dependency
4 * Version: 6.0.1
5 * All classes are prefixed with 'ufg-' to avoid theme conflicts
6 */
7
8 /* ============================================
9 1. Reset & Box Model
10 ============================================ */
11 .fg-content-wrapper,
12 .fg-content-wrapper *,
13 .fg-content-wrapper *::before,
14 .fg-content-wrapper *::after {
15 box-sizing: border-box;
16 }
17
18 /* Prevent FOUC (Flash of Unstyled Content) during initial page load */
19 .fg-content-wrapper .ufg-filter-container,
20 .fg-content-wrapper .ufg-search-container,
21 .fg-content-wrapper .ufg-combined-row,
22 .fg-content-wrapper .ufg-uncombined-search {
23 opacity: 0;
24 pointer-events: none;
25 transition: opacity 0.4s ease;
26 }
27
28 .fg-content-wrapper .filter-group.ufg-hide-group,
29 .fg-content-wrapper .ufg-filter-container .filter-group.ufg-hide-group,
30 .fg-content-wrapper .ufg-filter-style-atelier-luxury .filter-group.ufg-hide-group {
31 display: none !important;
32 }
33
34 /* ============================================
35 2. Layout - Flexbox Row
36 ============================================ */
37 .fg-content-wrapper .ufg-row {
38 display: flex;
39 flex-wrap: wrap;
40 margin-right: 0;
41 margin-left: 0;
42 }
43
44 /* ============================================
45 3. Gallery Grid (Isotope-compatible)
46 ============================================ */
47 .fg-content-wrapper .ufg-gallery {
48 display: block !important; /* Disable flexbox to let Isotope handle positioning */
49 }
50
51 .fg-content-wrapper .ufg-gallery::after {
52 content: '';
53 display: block;
54 clear: both;
55 }
56
57 /* ============================================
58 4. Image Utilities
59 ============================================ */
60 .fg-content-wrapper .ufg-img-responsive {
61 display: block;
62 max-width: 100%;
63 width: 100%;
64 height: auto;
65 }
66
67 /* ============================================
68 5. Visibility Utilities
69 ============================================ */
70 .fg-content-wrapper .ufg-hidden {
71 display: none !important;
72 }
73
74 .fg-content-wrapper .ufg-visible-block {
75 display: block !important;
76 }
77
78 /* ============================================
79 6. Text Utilities
80 ============================================ */
81 .fg-content-wrapper .ufg-text-center {
82 text-align: center;
83 }
84
85 .fg-content-wrapper .ufg-no-underline {
86 text-decoration: none;
87 }
88
89 .fg-content-wrapper .ufg-no-underline:hover {
90 text-decoration: none;
91 }
92
93 /* ============================================
94 7. Filter Container Layout
95 ============================================ */
96 .fg-content-wrapper .ufg-filter-container {
97 margin-bottom: 20px;
98 width: 100%;
99 }
100 .fg-content-wrapper .ufg-uncombined-filter {
101 padding-left: 15px;
102 padding-right: 15px;
103 box-sizing: border-box;
104 }
105
106 .fg-content-wrapper .ufg-filter-container .filter-group {
107 margin-top: 0;
108 margin-bottom: 15px;
109 }
110 .fg-content-wrapper .ufg-filter-container .filter-group:last-child {
111 margin-bottom: 0;
112 }
113
114 .fg-content-wrapper .ufg-filter-container .filter-group button {
115 margin-right: 0.3rem;
116 margin-bottom: 0.3rem;
117 }
118
119 .fg-content-wrapper .ufg-filter-group-inner > button:first-of-type {
120 margin-left: 0 !important;
121 }
122
123 .fg-content-wrapper .ufg-filter-group-inner {
124 width: 100%;
125 padding-right: 0 !important;
126 padding-left: 0 !important;
127 }
128
129 /* Filter heading labels */
130 .fg-content-wrapper .parent-filters-label {
131 margin-bottom: 0.75rem;
132 }
133
134 .fg-content-wrapper .level-one-filters-label,
135 .fg-content-wrapper .level-two-filters-label,
136 .fg-content-wrapper .level-three-filters-label,
137 .fg-content-wrapper .level-four-filters-label,
138 .fg-content-wrapper .level-five-filters-label {
139 margin-top: 0.75rem;
140 }
141
142 /* ============================================
143 8. Gallery Thumbnail Layout
144 ============================================ */
145 .fg-content-wrapper .ufg-thumbnail {
146 float: left;
147 padding-right: 15px;
148 padding-left: 15px;
149 padding-bottom: 30px;
150 }
151
152 .fg-content-wrapper .ufg-thumbnail-border {
153 border-radius: 0.25rem;
154 overflow: hidden;
155 }
156
157 .fg-content-wrapper .ufg-thumbnail-border a {
158 display: block;
159 overflow: hidden;
160 position: relative;
161 }
162
163 /* ============================================
164 9. Image Content (Title, Description, Button)
165 ============================================ */
166 .fg-content-wrapper .ufg-image-content {
167 padding: 5px;
168 }
169
170 .fg-content-wrapper .ufg-image-title {
171 padding: 5px 8px;
172 word-wrap: break-word;
173 }
174
175 .fg-content-wrapper .ufg-image-description {
176 padding: 5px 8px;
177 word-wrap: break-word;
178 }
179
180 /* ============================================
181 10. Read More Button
182 ============================================ */
183 .fg-content-wrapper .ufg-read-more-button {
184 display: block;
185 width: 100%;
186 padding: 6px 12px;
187 font-size: 0.875rem;
188 line-height: 1.5;
189 border: 1px solid transparent;
190 border-radius: 0.25rem;
191 text-align: center;
192 text-decoration: none;
193 cursor: pointer;
194 transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;
195 }
196
197 .fg-content-wrapper .ufg-read-more-button:hover {
198 text-decoration: none;
199 opacity: 0.85;
200 }
201
202 .fg-content-wrapper .ufg-read-more-button i {
203 margin-right: 5px;
204 }
205
206 /* ============================================
207 11. Image Wrap & Fade-in
208 ============================================ */
209 .fg-content-wrapper .ufg-img-wrap {
210 position: relative;
211 width: 100%;
212 overflow: hidden;
213 background-color: rgba(0, 0, 0, 0.05);
214 min-height: 100px;
215 transition: background-color 0.3s ease;
216 }
217
218 .fg-content-wrapper .ufg-img-wrap img {
219 opacity: 0;
220 transition: opacity 0.6s ease-in-out;
221 display: block;
222 width: 100%;
223 height: auto;
224 }
225
226 .fg-content-wrapper .ufg-img-wrap.loaded img {
227 opacity: 1;
228 }
229
230 .fg-content-wrapper .ufg-img-wrap.loaded {
231 background-color: transparent;
232 }
233
234 /* ============================================
235 12. Image Hover Effect - Border Overlay
236 ============================================ */
237 .fg-content-wrapper .ufg-thumbnail img {
238 transition: transform 0.5s, filter 1.5s ease-in-out;
239 background: #000;
240 }
241
242 /* ============================================
243 13. Filter Button Base Styles
244 ============================================ */
245 .fg-content-wrapper .ufg-btn.filters {
246 position: relative;
247 border: none;
248 font-size: inherit;
249 color: #333333;
250 background: none;
251 cursor: pointer;
252 padding: 12px 15px;
253 -webkit-transition: all 0.3s;
254 -moz-transition: all 0.3s;
255 transition: all 0.3s;
256 display: inline-block;
257 line-height: 1.5;
258 vertical-align: middle;
259 }
260
261 .fg-content-wrapper .ufg-btn > :first-child:not(.ufg-active-dot) {
262 margin-right: 7px;
263 }
264
265 .fg-content-wrapper .ufg-btn .ufg-active-dot {
266 display: none !important;
267 vertical-align: middle;
268 margin-left: 8px;
269 width: 8px;
270 height: 8px;
271 background-color: currentColor;
272 border-radius: 50%;
273 -webkit-transition: all 0.3s;
274 -moz-transition: all 0.3s;
275 transition: all 0.3s;
276 opacity: 0;
277 }
278
279 /* Fallback for multiple variations of active class JS might use */
280 .fg-content-wrapper .active-filter .ufg-active-dot,
281 .fg-content-wrapper .active .ufg-active-dot,
282 .fg-content-wrapper .current .ufg-active-dot {
283 opacity: 1;
284 }
285
286 .fg-content-wrapper .ufg-btn:after {
287 content: '';
288 position: absolute;
289 z-index: -1;
290 -webkit-transition: all 0.3s;
291 -moz-transition: all 0.3s;
292 transition: all 0.3s;
293 }
294
295 .fg-content-wrapper .ufg-btn-3:before {
296 position: absolute;
297 height: 100%;
298 left: 0;
299 top: 0;
300 line-height: 3;
301 font-size: 140%;
302 width: 60px;
303 }
304
305 /* ============================================
306 14. Load More Button
307 ============================================ */
308 .fg-content-wrapper .fg-load-more {
309 display: inline-block !important;
310 text-align: center;
311 padding: 25px 0;
312 width: 100%;
313 }
314
315 .fg-content-wrapper .fg-load-more button {
316 text-align: center;
317 position: relative;
318 padding: 12px 25px;
319 }
320
321 .fg-content-wrapper #fg-load-btn i {
322 opacity: 0;
323 position: absolute;
324 right: 15px;
325 -webkit-transition: all 0.3s;
326 -moz-transition: all 0.3s;
327 transition: all 0.3s;
328 }
329
330 .fg-content-wrapper #fg-load-btn.load i {
331 opacity: 1;
332 margin-right: 0;
333 }
334
335 .fg-content-wrapper #fg-load-btn.load {
336 padding: 12px 40px 12px 15px;
337 }
338
339 /* ============================================
340 15. Gallery Container Clearfix
341 ============================================ */
342 .fg-content-wrapper .ufg-gallery-container::after {
343 content: '';
344 display: block;
345 clear: both;
346 }
347
348 /* ============================================
349 16. Search Box Styles
350 ============================================ */
351 .fg-content-wrapper .ufg-search-container {
352 margin-top: 0;
353 margin-bottom: 20px;
354 text-align: center;
355 width: 100%;
356 }
357
358 .fg-content-wrapper .ufg-search-input {
359 width: 100%;
360 max-width: 75%;
361 padding: 10px 15px;
362 border: 1px solid #e5e7eb;
363 border-radius: 6px;
364 background: #fff;
365 color: #374151;
366 font-size: 14px;
367 box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
368 outline: none;
369 transition: all 0.2s ease-in-out;
370 }
371
372 .fg-content-wrapper .ufg-search-input:focus {
373 border-color: #3b82f6;
374 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
375 }
376
377 /* ============================================
378 17. Admin and Visitor Notice Boxes
379 ============================================ */
380 .fg-content-wrapper .ufg-admin-notice-box {
381 background: rgba(239, 68, 68, 0.08);
382 backdrop-filter: blur(8px);
383 -webkit-backdrop-filter: blur(8px);
384 border: 1px solid rgba(239, 68, 68, 0.2);
385 border-left: 5px solid #ef4444;
386 color: #9b2c2c;
387 padding: 16px;
388 margin: 20px 0;
389 border-radius: 8px;
390 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
391 font-size: 15px;
392 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
393 animation: ufgFadeIn 0.4s ease-out;
394 }
395
396 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-flex {
397 display: flex;
398 align-items: flex-start;
399 }
400
401 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-icon {
402 font-size: 20px;
403 margin-right: 12px;
404 line-height: 1;
405 color: #ef4444;
406 margin-top: 2px;
407 }
408
409 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-content {
410 flex: 1;
411 }
412
413 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-title {
414 display: block;
415 margin-bottom: 4px;
416 font-size: 16px;
417 color: #742a2a;
418 }
419
420 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-text {
421 line-height: 1.5;
422 color: #742a2a;
423 }
424
425 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-actions {
426 margin-top: 12px;
427 }
428
429 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-btn {
430 display: inline-flex;
431 align-items: center;
432 justify-content: center;
433 background: #ef4444;
434 color: #fff !important;
435 text-decoration: none;
436 padding: 8px 16px;
437 border-radius: 4px;
438 font-weight: 600;
439 font-size: 13px;
440 transition: background 0.2s, transform 0.1s;
441 box-shadow: 0 2px 4px rgba(239, 68, 68, 0.2);
442 }
443
444 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-btn:hover {
445 background: #dc2626;
446 transform: translateY(-1px);
447 text-decoration: none;
448 }
449
450 .fg-content-wrapper .ufg-admin-notice-box .ufg-notice-btn:active {
451 transform: translateY(0);
452 }
453
454 /* Visitor notice style */
455 .fg-content-wrapper .ufg-visitor-notice-box {
456 background: rgba(243, 244, 246, 0.6);
457 backdrop-filter: blur(8px);
458 -webkit-backdrop-filter: blur(8px);
459 border: 1px solid rgba(209, 213, 219, 0.4);
460 color: #4b5563;
461 padding: 24px;
462 margin: 20px 0;
463 border-radius: 8px;
464 text-align: center;
465 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
466 font-size: 16px;
467 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
468 animation: ufgFadeIn 0.4s ease-out;
469 }
470
471 .fg-content-wrapper .ufg-visitor-notice-box .ufg-visitor-icon {
472 font-size: 32px;
473 margin-bottom: 12px;
474 display: block;
475 color: #9ca3af;
476 }
477
478 .fg-content-wrapper .ufg-visitor-notice-box .ufg-visitor-text {
479 font-weight: 500;
480 color: #4b5563;
481 }
482
483 @keyframes ufgFadeIn {
484 from { opacity: 0; transform: translateY(-10px); }
485 to { opacity: 1; transform: translateY(0); }
486 }
487
488