PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.6
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.6
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / testimonials / style.css

style.css in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.6, at blocks/testimonials/style.css

440 lines 9.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Testimonials Block Styles
3 * Blockenberg
4 */
5
6 .bkbg-ts-wrap {
7 --bkbg-ts-columns: 3;
8 --bkbg-ts-gap: 24px;
9
10 --bkbg-ts-card-bg: #ffffff;
11 --bkbg-ts-card-border-color: #e5e7eb;
12 --bkbg-ts-card-border-width: 1px;
13 --bkbg-ts-card-radius: 16px;
14 --bkbg-ts-card-padding: 24px;
15
16 --bkbg-ts-text-align: left;
17
18 --bkbg-ts-quote-icon-color: #3b82f6;
19 --bkbg-ts-quote-icon-size: 22px;
20
21 --bkbg-ts-quote-color: #111827;
22 --bkbg-ts-quote-size: 16px;
23 --bkbg-ts-quote-weight: 500;
24
25 --bkbg-ts-name-color: #111827;
26 --bkbg-ts-name-size: 16px;
27 --bkbg-ts-name-weight: 700;
28
29 --bkbg-ts-role-color: #6b7280;
30 --bkbg-ts-role-size: 13px;
31 --bkbg-ts-role-weight: 600;
32
33 --bkbg-ts-company-color: #6b7280;
34
35 --bkbg-ts-rating-color: #f59e0b;
36 --bkbg-ts-rating-size: 16px;
37
38 --bkbg-ts-featured-border-color: #3b82f6;
39
40 --bkbg-ts-avatar-size: 44px;
41 --bkbg-ts-avatar-radius: 999px;
42
43 width: 100%;
44 }
45
46 /* Keep wrapper clean on frontend (some themes add wrapper borders) */
47 .wp-block-blockenberg-testimonials,
48 .wp-block-blockenberg-testimonials .bkbg-ts-wrap {
49 border: 0;
50 outline: 0;
51 }
52
53 .bkbg-ts-grid {
54 display: grid;
55 grid-template-columns: repeat(var(--bkbg-ts-columns), minmax(0, 1fr));
56 gap: var(--bkbg-ts-gap);
57 }
58
59 @media (max-width: 900px) {
60 .bkbg-ts-grid {
61 grid-template-columns: repeat(2, minmax(0, 1fr));
62 }
63 }
64
65 @media (max-width: 560px) {
66 .bkbg-ts-grid {
67 grid-template-columns: repeat(1, minmax(0, 1fr));
68 }
69 }
70
71 /* Carousel layout (scroll-snap) */
72 .bkbg-ts-carousel {
73 position: relative;
74 }
75
76 .bkbg-ts-carousel-track {
77 display: grid;
78 grid-auto-flow: column;
79 grid-auto-columns: minmax(260px, 1fr);
80 gap: var(--bkbg-ts-gap);
81 -ms-overflow-style: none;
82 scrollbar-width: none;
83 overflow-x: auto;
84 overflow-y: visible;
85 padding-bottom: 8px;
86 scroll-snap-type: x mandatory;
87 align-items: start;
88 }
89
90 .bkbg-ts-carousel-track::-webkit-scrollbar {
91 width: 0;
92 height: 0;
93 }
94
95 .bkbg-ts-carousel.bkbg-ts-carousel-peek .bkbg-ts-carousel-track {
96 padding-right: 20%;
97 }
98
99 .bkbg-ts-slide {
100 scroll-snap-align: start;
101 }
102
103 .bkbg-ts-nav {
104 display: flex;
105 justify-content: flex-end;
106 gap: 8px;
107 margin-bottom: 10px;
108 }
109
110 .bkbg-ts-carousel-inner {
111 position: relative;
112 display: flex;
113 flex-direction: column;
114 }
115
116 /* Nav placement styles */
117 .bkbg-ts-nav {
118 order: 0;
119 position: relative;
120 z-index: 2;
121 }
122
123 .bkbg-ts-carousel-track {
124 order: 1;
125 position: relative;
126 z-index: 1;
127 }
128
129 .bkbg-ts-nav-bottom .bkbg-ts-nav {
130 justify-content: center;
131 margin: 10px 0 0;
132 order: 2;
133 }
134
135 .bkbg-ts-nav-overlay .bkbg-ts-nav {
136 position: absolute;
137 top: 50%;
138 left: 0;
139 right: 0;
140 transform: translateY(-50%);
141 justify-content: space-between;
142 margin: 0;
143 pointer-events: none;
144 z-index: 3;
145 }
146
147 .bkbg-ts-nav-overlay .bkbg-ts-nav-btn {
148 pointer-events: auto;
149 position: relative;
150 z-index: 4;
151 }
152
153 .bkbg-ts-nav-overlay .bkbg-ts-nav-btn:hover {
154 z-index: 10;
155 background: #fff;
156 }
157
158 .bkbg-ts-nav-overlay .bkbg-ts-nav-btn {
159 width: 40px;
160 height: 40px;
161 border-radius: 999px;
162 box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
163 }
164
165 .bkbg-ts-nav-overlay .bkbg-ts-carousel-track {
166 padding-left: 48px;
167 padding-right: 48px;
168 }
169
170 /* Indicators */
171 .bkbg-ts-indicators {
172 display: flex;
173 justify-content: center;
174 margin-top: 10px;
175 }
176
177 .bkbg-ts-indicators-pos-top .bkbg-ts-indicators {
178 margin-top: 0;
179 margin-bottom: 10px;
180 }
181
182 .bkbg-ts-dots {
183 display: flex;
184 gap: 8px;
185 }
186
187 .bkbg-ts-dot {
188 width: var(--bkbg-ts-indicator-size, 8px);
189 height: var(--bkbg-ts-indicator-size, 8px);
190 border-radius: 999px;
191 border: 0;
192 background: var(--bkbg-ts-indicator-color, rgba(0, 0, 0, 0.22));
193 cursor: pointer;
194 padding: 0;
195 transition: width 0.18s ease, background-color 0.18s ease;
196 }
197
198 .bkbg-ts-dot.is-active {
199 background: var(--bkbg-ts-indicator-active-color, rgba(0, 0, 0, 0.65));
200 }
201
202 /* Dots variant: active dot becomes a pill */
203 .bkbg-ts-dots-style-pill .bkbg-ts-dot.is-active {
204 width: calc(var(--bkbg-ts-indicator-size, 8px) * 2.6);
205 }
206
207 .bkbg-ts-progress {
208 width: min(360px, 100%);
209 height: var(--bkbg-ts-progress-height, 6px);
210 border-radius: 999px;
211 background: var(--bkbg-ts-progress-bg, rgba(0, 0, 0, 0.12));
212 overflow: hidden;
213 }
214
215 /* Progress variant: edge-to-edge line */
216 .bkbg-ts-progress-style-edge .bkbg-ts-progress {
217 width: 100%;
218 border-radius: 0;
219 }
220
221 .bkbg-ts-progress-style-edge .bkbg-ts-progress-bar {
222 border-radius: 0;
223 }
224
225 .bkbg-ts-progress-bar {
226 height: 100%;
227 width: 0%;
228 background: var(--bkbg-ts-progress-fg, rgba(0, 0, 0, 0.55));
229 border-radius: 999px;
230 }
231
232 .bkbg-ts-fraction {
233 font-size: var(--bkbg-ts-fraction-size, 13px);
234 color: var(--bkbg-ts-fraction-color, rgba(0, 0, 0, 0.65));
235 font-weight: 600;
236 letter-spacing: 0.02em;
237 user-select: none;
238 }
239
240 .bkbg-ts-nav-btn {
241 width: 36px;
242 height: 36px;
243 border-radius: 10px;
244 border: 1px solid rgba(0, 0, 0, 0.12);
245 background: #fff;
246 cursor: pointer;
247 display: inline-flex;
248 align-items: center;
249 justify-content: center;
250 }
251
252 .bkbg-ts-nav-btn:hover {
253 background: rgba(0, 0, 0, 0.03);
254 }
255
256 .bkbg-ts-card {
257 background: var(--bkbg-ts-card-bg);
258 border: var(--bkbg-ts-card-border-width) solid var(--bkbg-ts-card-border-color);
259 border-radius: var(--bkbg-ts-card-radius);
260 padding: var(--bkbg-ts-card-padding);
261 text-align: var(--bkbg-ts-text-align);
262 display: flex;
263 flex-direction: column;
264 gap: 14px;
265 position: relative;
266 }
267
268 .bkbg-ts-card.is-featured {
269 border-color: var(--bkbg-ts-featured-border-color);
270 box-shadow: 0 0 0 2px var(--bkbg-ts-featured-border-color), 0 10px 24px rgba(0, 0, 0, 0.08);
271 }
272
273 /* Make featured card stand out in grid */
274 .bkbg-ts-grid .bkbg-ts-card.is-featured {
275 grid-column: span 2;
276 }
277
278 @media (max-width: 900px) {
279 .bkbg-ts-grid .bkbg-ts-card.is-featured {
280 grid-column: span 2;
281 }
282 }
283
284 @media (max-width: 560px) {
285 .bkbg-ts-grid .bkbg-ts-card.is-featured {
286 grid-column: span 1;
287 }
288 }
289
290 .bkbg-ts-card.has-shadow {
291 box-shadow: 0 10px 24px rgba(0, 0, 0, 0.08);
292 }
293
294 .bkbg-ts-quote-icon {
295 color: var(--bkbg-ts-quote-icon-color);
296 display: inline-flex;
297 }
298
299 .bkbg-ts-quote-icon .dashicons {
300 width: var(--bkbg-ts-quote-icon-size);
301 height: var(--bkbg-ts-quote-icon-size);
302 font-size: var(--bkbg-ts-quote-icon-size);
303 }
304
305 .bkbg-ts-quote {
306 color: var(--bkbg-ts-quote-color);
307 font-size: var(--bkbg-ts-quote-size);
308 font-weight: var(--bkbg-ts-quote-weight);
309 line-height: 1.6;
310 margin: 0;
311 }
312
313 .bkbg-ts-meta {
314 display: flex;
315 align-items: center;
316 gap: 12px;
317 }
318
319 .bkbg-ts-avatar {
320 width: var(--bkbg-ts-avatar-size);
321 height: var(--bkbg-ts-avatar-size);
322 border-radius: var(--bkbg-ts-avatar-radius);
323 overflow: hidden;
324 background: #f3f4f6;
325 border: 1px solid rgba(0, 0, 0, 0.04);
326 flex-shrink: 0;
327 display: flex;
328 align-items: center;
329 justify-content: center;
330 }
331
332 .bkbg-ts-avatar img {
333 width: 100%;
334 height: 100%;
335 object-fit: cover;
336 display: block;
337 }
338
339 .bkbg-ts-avatar .dashicons {
340 color: #6b7280;
341 width: 22px;
342 height: 22px;
343 font-size: 22px;
344 }
345
346 .bkbg-ts-author {
347 display: flex;
348 flex-direction: column;
349 gap: 2px;
350 min-width: 0;
351 }
352
353 .bkbg-ts-name {
354 color: var(--bkbg-ts-name-color);
355 font-size: var(--bkbg-ts-name-size);
356 font-weight: var(--bkbg-ts-name-weight);
357 line-height: 1.25;
358 margin: 0;
359 }
360
361 .bkbg-ts-roleline {
362 color: var(--bkbg-ts-role-color);
363 font-size: var(--bkbg-ts-role-size);
364 font-weight: var(--bkbg-ts-role-weight);
365 line-height: 1.2;
366 margin: 0;
367 }
368
369 .bkbg-ts-company {
370 color: var(--bkbg-ts-company-color);
371 font-weight: 600;
372 }
373
374 .bkbg-ts-rating {
375 display: inline-flex;
376 gap: 4px;
377 color: var(--bkbg-ts-rating-color);
378 }
379
380 .bkbg-ts-star {
381 width: var(--bkbg-ts-rating-size);
382 height: var(--bkbg-ts-rating-size);
383 font-size: var(--bkbg-ts-rating-size);
384 line-height: 1;
385 }
386
387 .bkbg-ts-star-btn {
388 appearance: none;
389 background: transparent;
390 border: 0;
391 padding: 0;
392 margin: 0;
393 line-height: 1;
394 cursor: pointer;
395 color: inherit;
396 display: inline-flex;
397 align-items: center;
398 justify-content: center;
399 }
400
401 .bkbg-ts-star-btn:focus {
402 outline: 2px solid var(--wp-admin-theme-color, #007cba);
403 outline-offset: 2px;
404 }
405
406 /* Editor controls */
407 .bkbg-ts-card.is-active {
408 outline: 2px solid var(--wp-admin-theme-color, #007cba);
409 outline-offset: 2px;
410 }
411
412 .bkbg-ts-actions {
413 position: absolute;
414 top: 10px;
415 right: 10px;
416 display: flex;
417 gap: 6px;
418 opacity: 0;
419 transform: translateY(-4px);
420 transition: opacity 0.15s ease, transform 0.15s ease;
421 }
422
423 .bkbg-ts-card:hover .bkbg-ts-actions,
424 .bkbg-ts-card.is-active .bkbg-ts-actions {
425 opacity: 1;
426 transform: translateY(0);
427 }
428
429 .bkbg-ts-actions .components-button {
430 min-width: 28px;
431 height: 28px;
432 padding: 0;
433 }
434
435 @media (prefers-reduced-motion: reduce) {
436 .bkbg-ts-carousel-track {
437 scroll-behavior: auto;
438 }
439 }
440