PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.7
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.7
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 / blockquote / style.css

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

398 lines 17.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ========================================
2 Blockquote / Pull Quote Block
3 Prefix: bkbg-bq-
4 ======================================== */
5
6 /* ── CSS Custom Properties (fallbacks) ────────────────────────────────────── */
7 .bkbg-bq-wrap {
8 --bkbg-bq-accent-color: #3b82f6;
9 --bkbg-bq-accent-w: 4px;
10 --bkbg-bq-accent-r: 2px;
11 --bkbg-bq-bg: transparent;
12 --bkbg-bq-radius: 8px;
13 --bkbg-bq-mark-opacity: 0.20;
14 --bkbg-bq-pad-t: 28px;
15 --bkbg-bq-pad-r: 32px;
16 --bkbg-bq-pad-b: 28px;
17 --bkbg-bq-pad-l: 32px;
18 --bkbg-bq-shadow: none;
19 --bkbg-bq-quote-color: #1e293b;
20 --bkbg-bq-quote-spacing: 20px;
21 --bkbg-bq-name-color: #1e293b;
22 --bkbg-bq-role-color: #6b7280;
23 --bkbg-bq-photo-size: 52px;
24 --bkbg-bq-photo-border: none;
25 --bkbg-bq-gap-photo: 12px;
26 }
27
28 /* ── Wrapper ───────────────────────────────────────────────────────────────── */
29 .bkbg-bq-wrap {
30 position: relative;
31 display: block;
32 margin: 0;
33 padding: var(--bkbg-bq-pad-t) var(--bkbg-bq-pad-r) var(--bkbg-bq-pad-b) var(--bkbg-bq-pad-l);
34 background: var(--bkbg-bq-bg);
35 border-radius: var(--bkbg-bq-radius);
36 box-shadow: var(--bkbg-bq-shadow);
37 }
38
39 /* ── Body (sits above float mark) ─────────────────────────────────────────── */
40 .bkbg-bq-body {
41 position: relative;
42 z-index: 1;
43 }
44
45 /* ── Quote text ────────────────────────────────────────────────────────────── */
46 .bkbg-bq-text {
47 display: block;
48 margin: 0 0 var(--bkbg-bq-quote-spacing) 0;
49 padding: 0;
50 border: none;
51 font-family: var(--bkbg-bq-quote-font-family, inherit);
52 font-weight: var(--bkbg-bq-quote-font-weight, 400);
53 font-style: var(--bkbg-bq-quote-font-style, italic);
54 text-transform: var(--bkbg-bq-quote-text-transform, none);
55 text-decoration: var(--bkbg-bq-quote-text-decoration, none);
56 font-size: var(--bkbg-bq-quote-font-size-d, 22px);
57 line-height: var(--bkbg-bq-quote-line-height-d, 1.65);
58 letter-spacing: var(--bkbg-bq-quote-letter-spacing-d, normal);
59 word-spacing: var(--bkbg-bq-quote-word-spacing-d, normal);
60 color: var(--bkbg-bq-quote-color);
61 }
62
63 /* ──────────────────────────────────────────────────────────────────────────── */
64 /* QUOTE STYLE VARIANTS */
65 /* ──────────────────────────────────────────────────────────────────────────── */
66
67 /* ── Line: left accent bar ─────────────────────────────────────────────────── */
68 .bkbg-bq-wrap[data-style="line"] {
69 border-left: var(--bkbg-bq-accent-w) solid var(--bkbg-bq-accent-color);
70 border-radius: 0 var(--bkbg-bq-radius) var(--bkbg-bq-radius) 0;
71 }
72
73 /* ── Top Bar: top accent stripe ─────────────────────────────────────────────── */
74 .bkbg-bq-wrap[data-style="top-bar"] {
75 border-top: var(--bkbg-bq-accent-w) solid var(--bkbg-bq-accent-color);
76 border-radius: 0 0 var(--bkbg-bq-radius) var(--bkbg-bq-radius);
77 }
78
79 /* ── Bordered: full outline ─────────────────────────────────────────────────── */
80 .bkbg-bq-wrap[data-style="bordered"] {
81 border: var(--bkbg-bq-accent-w) solid var(--bkbg-bq-accent-color);
82 }
83
84 /* ── Card: tinted background + shadow ─────────────────────────────────────── */
85 .bkbg-bq-wrap[data-style="card"] {
86 /* bg set via inline CSS var; shadow controlled by toggle */
87 border-radius: var(--bkbg-bq-radius);
88 }
89
90 /* ── Quotes: mark is the main visual focus — no extra rules needed, typography
91 controlled entirely via inspector controls ──────────────────────────────── */
92
93 /* ── Minimal: no decorations — inherits base styles ────────────────────────── */
94
95 /* ──────────────────────────────────────────────────────────────────────────── */
96 /* DECORATIVE QUOTE MARK */
97 /* ──────────────────────────────────────────────────────────────────────────── */
98
99 /* Mark shared base */
100 .bkbg-bq-mark {
101 display: block;
102 line-height: 1;
103 user-select: none;
104 pointer-events: none;
105 }
106
107 /* Float → Side: mark in its own left column, body takes remaining space */
108 .bkbg-bq-wrap[data-mark-pos="float"],
109 .bkbg-bq-wrap[data-mark-pos="right"] {
110 display: flex;
111 flex-direction: row;
112 align-items: flex-start;
113 gap: var(--bkbg-bq-mark-side-gap, 16px);
114 }
115
116 /* Left: mark first (default DOM order) */
117 .bkbg-bq-wrap[data-mark-pos="float"] .bkbg-bq-mark {
118 position: static;
119 flex-shrink: 0;
120 opacity: 1;
121 pointer-events: none;
122 user-select: none;
123 margin-top: -4px;
124 }
125
126 /* Right: mark last — push it after body via order */
127 .bkbg-bq-wrap[data-mark-pos="right"] .bkbg-bq-mark {
128 position: static;
129 flex-shrink: 0;
130 opacity: 1;
131 pointer-events: none;
132 user-select: none;
133 margin-top: -4px;
134 order: 1; /* body is 0 (default), mark goes after */
135 }
136
137 .bkbg-bq-wrap[data-mark-pos="float"] .bkbg-bq-body,
138 .bkbg-bq-wrap[data-mark-pos="right"] .bkbg-bq-body {
139 flex: 1;
140 min-width: 0;
141 }
142
143 /* Above: in-flow block before quote text */
144 .bkbg-bq-wrap[data-mark-pos="above"] .bkbg-bq-mark {
145 position: static;
146 margin-bottom: 8px;
147 }
148
149 /* Center the mark for center-aligned blocks */
150 .bkbg-bq-wrap[data-quote-align="center"][data-mark-pos="above"] .bkbg-bq-body,
151 .bkbg-bq-wrap[data-quote-align="center"][data-mark-pos="above"] .bkbg-bq-mark {
152 display: flex;
153 flex-direction: column;
154 align-items: center;
155 }
156
157 /* ──────────────────────────────────────────────────────────────────────────── */
158 /* TEXT ALIGNMENT */
159 /* ──────────────────────────────────────────────────────────────────────────── */
160
161 .bkbg-bq-wrap[data-quote-align="left"] .bkbg-bq-body { text-align: left; }
162 .bkbg-bq-wrap[data-quote-align="center"] .bkbg-bq-body { text-align: center; }
163 .bkbg-bq-wrap[data-quote-align="right"] .bkbg-bq-body { text-align: right; }
164
165 /* ──────────────────────────────────────────────────────────────────────────── */
166 /* AUTHOR ROW */
167 /* ──────────────────────────────────────────────────────────────────────────── */
168
169 .bkbg-bq-author {
170 display: flex;
171 gap: var(--bkbg-bq-gap-photo);
172 }
173
174 /* Horizontal: photo on left, text on right, vertically centred */
175 .bkbg-bq-author[data-layout="horizontal"] {
176 flex-direction: row;
177 align-items: center;
178 }
179
180 /* Horizontal-right: photo on right, text on left, text right-aligned towards photo */
181 .bkbg-bq-author[data-layout="horizontal-right"] {
182 flex-direction: row;
183 align-items: center;
184 }
185 .bkbg-bq-author[data-layout="horizontal-right"] .bkbg-bq-photo-wrap {
186 order: 1;
187 }
188 .bkbg-bq-author[data-layout="horizontal-right"] .bkbg-bq-info {
189 text-align: right;
190 }
191
192 /* Vertical: photo above, text below, stacked */
193 .bkbg-bq-author[data-layout="vertical"] {
194 flex-direction: column;
195 align-items: flex-start;
196 }
197
198 /* Align author row with text alignment */
199 .bkbg-bq-wrap[data-quote-align="center"] .bkbg-bq-author {
200 justify-content: center;
201 }
202 .bkbg-bq-wrap[data-quote-align="center"] .bkbg-bq-author[data-layout="vertical"] {
203 align-items: center;
204 }
205 /* When horizontal + photo visible + centre align: keep name/role left-aligned to photo */
206 .bkbg-bq-wrap[data-quote-align="center"] .bkbg-bq-author[data-layout="horizontal"] .bkbg-bq-info {
207 text-align: left;
208 }
209 /* horizontal-right keeps right-align regardless of quote alignment */
210 .bkbg-bq-wrap[data-quote-align="center"] .bkbg-bq-author[data-layout="horizontal-right"] .bkbg-bq-info,
211 .bkbg-bq-wrap[data-quote-align="left"] .bkbg-bq-author[data-layout="horizontal-right"] .bkbg-bq-info {
212 text-align: right;
213 }
214 .bkbg-bq-wrap[data-quote-align="right"] .bkbg-bq-author {
215 justify-content: flex-end;
216 }
217 .bkbg-bq-wrap[data-quote-align="right"] .bkbg-bq-author[data-layout="vertical"] {
218 align-items: flex-end;
219 }
220 .bkbg-bq-wrap[data-quote-align="right"] .bkbg-bq-author[data-layout="horizontal"] .bkbg-bq-info {
221 text-align: left;
222 }
223 .bkbg-bq-wrap[data-quote-align="right"] .bkbg-bq-author[data-layout="horizontal-right"] .bkbg-bq-info {
224 text-align: right;
225 }
226
227 /* Info column */
228 .bkbg-bq-info {
229 display: flex;
230 flex-direction: column;
231 gap: 2px;
232 min-width: 0;
233 justify-content: center;
234 }
235
236 /* ── Author name ───────────────────────────────────────────────────────────── */
237 .bkbg-bq-name,
238 .bkbg-bq-wrap .bkbg-bq-name {
239 margin: 0;
240 padding: 0;
241 font-family: var(--bkbg-bq-name-font-family, inherit);
242 font-weight: var(--bkbg-bq-name-font-weight, 700);
243 font-style: var(--bkbg-bq-name-font-style, normal);
244 text-transform: var(--bkbg-bq-name-text-transform, none);
245 text-decoration: var(--bkbg-bq-name-text-decoration, none);
246 font-size: var(--bkbg-bq-name-font-size-d, 15px);
247 line-height: var(--bkbg-bq-name-line-height-d, 1.3);
248 letter-spacing: var(--bkbg-bq-name-letter-spacing-d, normal);
249 word-spacing: var(--bkbg-bq-name-word-spacing-d, normal);
250 color: var(--bkbg-bq-name-color);
251 text-align: inherit;
252 }
253
254 /* ── Author role ───────────────────────────────────────────────────────────── */
255 .bkbg-bq-role,
256 .bkbg-bq-wrap .bkbg-bq-role {
257 margin: 0;
258 padding: 0;
259 font-family: var(--bkbg-bq-role-font-family, inherit);
260 font-weight: var(--bkbg-bq-role-font-weight, 400);
261 font-style: var(--bkbg-bq-role-font-style, normal);
262 text-transform: var(--bkbg-bq-role-text-transform, none);
263 text-decoration: var(--bkbg-bq-role-text-decoration, none);
264 font-size: var(--bkbg-bq-role-font-size-d, 13px);
265 line-height: var(--bkbg-bq-role-line-height-d, 1.4);
266 letter-spacing: var(--bkbg-bq-role-letter-spacing-d, normal);
267 word-spacing: var(--bkbg-bq-role-word-spacing-d, normal);
268 color: var(--bkbg-bq-role-color);
269 text-align: inherit;
270 }
271
272 /* ── Author photo ──────────────────────────────────────────────────────────── */
273 .bkbg-bq-photo-wrap {
274 flex-shrink: 0;
275 width: var(--bkbg-bq-photo-size);
276 height: var(--bkbg-bq-photo-size);
277 overflow: hidden;
278 }
279
280 .bkbg-bq-photo {
281 display: block;
282 width: 100%;
283 height: 100%;
284 object-fit: cover;
285 border: var(--bkbg-bq-photo-border);
286 }
287
288 /* Photo shapes */
289 .bkbg-bq-photo-wrap[data-shape="circle"] {
290 border-radius: 50%;
291 }
292 .bkbg-bq-photo-wrap[data-shape="circle"] .bkbg-bq-photo {
293 border-radius: 50%;
294 }
295 .bkbg-bq-photo-wrap[data-shape="rounded"] {
296 border-radius: 12px;
297 }
298 .bkbg-bq-photo-wrap[data-shape="rounded"] .bkbg-bq-photo {
299 border-radius: 12px;
300 }
301 .bkbg-bq-photo-wrap[data-shape="square"] {
302 border-radius: 0;
303 }
304
305 /* ── Photo placeholder (editor only) ──────────────────────────────────────── */
306 .bkbg-bq-photo-placeholder {
307 display: flex;
308 align-items: center;
309 justify-content: center;
310 width: 100%;
311 height: 100%;
312 background: #e5e7eb;
313 border: 2px dashed #9ca3af;
314 border-radius: inherit;
315 color: #6b7280;
316 font-size: 11px;
317 font-weight: 600;
318 user-select: none;
319 }
320
321 /* ── Editor adjustments ────────────────────────────────────────────────────── */
322 .editor-styles-wrapper .bkbg-bq-wrap {
323 display: block !important;
324 }
325
326 .editor-styles-wrapper .bkbg-bq-wrap[data-mark-pos="float"],
327 .editor-styles-wrapper .bkbg-bq-wrap[data-mark-pos="right"] {
328 display: flex !important;
329 }
330
331 /* Prevent figure default margin in editor */
332 .editor-styles-wrapper .bkbg-bq-wrap {
333 margin-block: 0;
334 }
335
336 /* Prevent theme blockquote styles leaking in */
337 .bkbg-bq-text {
338 quotes: none;
339 }
340 .bkbg-bq-text::before,
341 .bkbg-bq-text::after {
342 content: none;
343 }
344
345 /* In editor, RichText does not need the dash either */
346
347 /* Vertical layout: photo placeholder full-width is wrong — cap it */
348 .bkbg-bq-author[data-layout="vertical"] .bkbg-bq-photo-wrap {
349 width: var(--bkbg-bq-photo-size);
350 }
351
352 /* === Typography responsive === */
353 @media (max-width: 1024px) {
354 .bkbg-bq-text {
355 font-size: var(--bkbg-bq-quote-font-size-t, var(--bkbg-bq-quote-font-size-d, 22px));
356 line-height: var(--bkbg-bq-quote-line-height-t, var(--bkbg-bq-quote-line-height-d, 1.65));
357 letter-spacing: var(--bkbg-bq-quote-letter-spacing-t, var(--bkbg-bq-quote-letter-spacing-d, normal));
358 word-spacing: var(--bkbg-bq-quote-word-spacing-t, var(--bkbg-bq-quote-word-spacing-d, normal));
359 }
360 .bkbg-bq-name,
361 .bkbg-bq-wrap .bkbg-bq-name {
362 font-size: var(--bkbg-bq-name-font-size-t, var(--bkbg-bq-name-font-size-d, 15px));
363 line-height: var(--bkbg-bq-name-line-height-t, var(--bkbg-bq-name-line-height-d, 1.3));
364 letter-spacing: var(--bkbg-bq-name-letter-spacing-t, var(--bkbg-bq-name-letter-spacing-d, normal));
365 word-spacing: var(--bkbg-bq-name-word-spacing-t, var(--bkbg-bq-name-word-spacing-d, normal));
366 }
367 .bkbg-bq-role,
368 .bkbg-bq-wrap .bkbg-bq-role {
369 font-size: var(--bkbg-bq-role-font-size-t, var(--bkbg-bq-role-font-size-d, 13px));
370 line-height: var(--bkbg-bq-role-line-height-t, var(--bkbg-bq-role-line-height-d, 1.4));
371 letter-spacing: var(--bkbg-bq-role-letter-spacing-t, var(--bkbg-bq-role-letter-spacing-d, normal));
372 word-spacing: var(--bkbg-bq-role-word-spacing-t, var(--bkbg-bq-role-word-spacing-d, normal));
373 }
374 }
375
376 @media (max-width: 767px) {
377 .bkbg-bq-text {
378 font-size: var(--bkbg-bq-quote-font-size-m, var(--bkbg-bq-quote-font-size-t, var(--bkbg-bq-quote-font-size-d, 22px)));
379 line-height: var(--bkbg-bq-quote-line-height-m, var(--bkbg-bq-quote-line-height-t, var(--bkbg-bq-quote-line-height-d, 1.65)));
380 letter-spacing: var(--bkbg-bq-quote-letter-spacing-m, var(--bkbg-bq-quote-letter-spacing-t, var(--bkbg-bq-quote-letter-spacing-d, normal)));
381 word-spacing: var(--bkbg-bq-quote-word-spacing-m, var(--bkbg-bq-quote-word-spacing-t, var(--bkbg-bq-quote-word-spacing-d, normal)));
382 }
383 .bkbg-bq-name,
384 .bkbg-bq-wrap .bkbg-bq-name {
385 font-size: var(--bkbg-bq-name-font-size-m, var(--bkbg-bq-name-font-size-t, var(--bkbg-bq-name-font-size-d, 15px)));
386 line-height: var(--bkbg-bq-name-line-height-m, var(--bkbg-bq-name-line-height-t, var(--bkbg-bq-name-line-height-d, 1.3)));
387 letter-spacing: var(--bkbg-bq-name-letter-spacing-m, var(--bkbg-bq-name-letter-spacing-t, var(--bkbg-bq-name-letter-spacing-d, normal)));
388 word-spacing: var(--bkbg-bq-name-word-spacing-m, var(--bkbg-bq-name-word-spacing-t, var(--bkbg-bq-name-word-spacing-d, normal)));
389 }
390 .bkbg-bq-role,
391 .bkbg-bq-wrap .bkbg-bq-role {
392 font-size: var(--bkbg-bq-role-font-size-m, var(--bkbg-bq-role-font-size-t, var(--bkbg-bq-role-font-size-d, 13px)));
393 line-height: var(--bkbg-bq-role-line-height-m, var(--bkbg-bq-role-line-height-t, var(--bkbg-bq-role-line-height-d, 1.4)));
394 letter-spacing: var(--bkbg-bq-role-letter-spacing-m, var(--bkbg-bq-role-letter-spacing-t, var(--bkbg-bq-role-letter-spacing-d, normal)));
395 word-spacing: var(--bkbg-bq-role-word-spacing-m, var(--bkbg-bq-role-word-spacing-t, var(--bkbg-bq-role-word-spacing-d, normal)));
396 }
397 }
398