wp-block-styles 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.css ADDED
@@ -0,0 +1,1493 @@
1
+ /**
2
+ * wp-block-styles.css
3
+ * Comprehensive styles for WordPress Gutenberg block classes
4
+ * rendered via the WP REST API in a headless/Next.js context.
5
+ *
6
+ * Usage (global):
7
+ * import 'wp-block-styles.css' // in _app.js or app/layout.tsx
8
+ *
9
+ * Usage (scoped to a wrapper):
10
+ * All selectors are prefixed with .wp-content so you can scope
11
+ * by adding className="wp-content" to your post content wrapper.
12
+ * In that case, use: import 'wp-block-styles.css' anywhere above the component.
13
+ *
14
+ * Caching:
15
+ * This file is static and side-effect free — safe to cache aggressively.
16
+ * Recommended Cache-Control: public, max-age=31536000, immutable
17
+ * Rename or version the file on updates (e.g. wp-block-styles.v2.css)
18
+ *
19
+ * ─────────────────────────────────────────────────────────────────────────────
20
+ * TABLE OF CONTENTS
21
+ * 1. Reset & Base
22
+ * 2. Typography (paragraph, heading, list, preformatted, code, poetry)
23
+ * 3. Quote & Pullquote
24
+ * 4. Image
25
+ * 5. Gallery
26
+ * 6. Video & Audio
27
+ * 7. Embed (iframe / oEmbed)
28
+ * 8. Media & Text
29
+ * 9. Cover
30
+ * 10. Columns & Column
31
+ * 11. Group
32
+ * 12. Buttons & Button
33
+ * 13. Table
34
+ * 14. Separator & Spacer
35
+ * 15. File Download
36
+ * 16. Details / Accordion
37
+ * 17. Social Icons
38
+ * 18. Search Block
39
+ * 19. Latest Posts / Latest Comments
40
+ * 20. Math (MathML / LaTeX)
41
+ * 21. Navigation (minimal reset)
42
+ * 22. Alignment Utilities (alignwide, alignfull, alignleft, alignright)
43
+ * 23. Has-text-align helpers
44
+ * 24. Color & Gradient utility classes
45
+ * 25. Legacy / Classic Editor classes
46
+ * 26. Dark Mode (@media prefers-color-scheme: dark) + [data-theme="dark"]
47
+ * 27. Print (@media print)
48
+ * ─────────────────────────────────────────────────────────────────────────────
49
+ */
50
+
51
+ /* ─── 0. CSS Custom Properties ─────────────────────────────────────────────── */
52
+ :root {
53
+ --wp-content-max-width: 860px;
54
+ --wp-wide-max-width: 1200px;
55
+ --wp-gap: 1.5rem;
56
+ --wp-border-color: #e2e2e2;
57
+ --wp-code-bg: #1e1e1e;
58
+ --wp-code-color: #f8f8f2;
59
+ --wp-blockquote-border: #888;
60
+ --wp-pullquote-border: currentColor;
61
+ --wp-caption-color: #6b6b6b;
62
+ }
63
+
64
+ /* ─── 1. Reset & Base ───────────────────────────────────────────────────────── */
65
+ .wp-content {
66
+ max-width: var(--wp-content-max-width);
67
+ margin: 0 auto;
68
+ padding: 0 1.25rem;
69
+ line-height: 1.7;
70
+ word-break: break-word;
71
+ overflow-wrap: break-word;
72
+ }
73
+
74
+ .wp-content * {
75
+ box-sizing: border-box;
76
+ }
77
+
78
+ .wp-content a {
79
+ word-wrap: break-word;
80
+ }
81
+
82
+ .wp-content a:visited {
83
+ opacity: 0.8;
84
+ }
85
+
86
+ /* ─── 2. Typography ─────────────────────────────────────────────────────────── */
87
+
88
+ /* Paragraph */
89
+ .wp-block-paragraph {
90
+ margin: 1.5rem 0;
91
+ }
92
+
93
+ .wp-block-paragraph.has-drop-cap::first-letter {
94
+ float: left;
95
+ font-size: 4em;
96
+ line-height: 0.68;
97
+ font-weight: 700;
98
+ margin: 0.1em 0.15em 0 0;
99
+ }
100
+
101
+ /* Headings */
102
+ .wp-block-heading,
103
+ .wp-content h1,
104
+ .wp-content h2,
105
+ .wp-content h3,
106
+ .wp-content h4,
107
+ .wp-content h5,
108
+ .wp-content h6 {
109
+ margin: 2rem 0 1rem;
110
+ line-height: 1.25;
111
+ font-weight: 700;
112
+ }
113
+
114
+ .wp-content h1 { font-size: 2em; }
115
+ .wp-content h2 { font-size: 1.6em; }
116
+ .wp-content h3 { font-size: 1.35em; }
117
+ .wp-content h4 { font-size: 1.15em; }
118
+ .wp-content h5 { font-size: 1em; }
119
+ .wp-content h6 { font-size: 0.9em; }
120
+
121
+ /* List */
122
+ .wp-block-list,
123
+ .wp-content ul,
124
+ .wp-content ol {
125
+ padding: 0.5rem 0 1rem 1.5rem;
126
+ margin: 0 0 1rem;
127
+ }
128
+
129
+ .wp-block-list li,
130
+ .wp-content ul li,
131
+ .wp-content ol li {
132
+ padding: 0.25rem 0;
133
+ line-height: 1.6;
134
+ }
135
+
136
+ /* Unordered: disc → circle → square as nesting deepens */
137
+ .wp-content ul,
138
+ .wp-block-list:not(ol) {
139
+ list-style-type: disc;
140
+ list-style-position: outside;
141
+ }
142
+
143
+ .wp-content ul ul,
144
+ .wp-content ol ul {
145
+ list-style-type: circle;
146
+ list-style-position: outside;
147
+ margin-left: 1.25rem;
148
+ padding-top: 0.25rem;
149
+ }
150
+
151
+ .wp-content ul ul ul {
152
+ list-style-type: square;
153
+ }
154
+
155
+ /* Ordered: decimal → lower-latin → lower-roman */
156
+ .wp-content ol,
157
+ .wp-block-list[type="ordered"] {
158
+ list-style-type: decimal;
159
+ list-style-position: outside;
160
+ }
161
+
162
+ .wp-content ol ol,
163
+ .wp-content ul ol {
164
+ list-style-type: lower-latin;
165
+ list-style-position: outside;
166
+ margin-left: 1.25rem;
167
+ padding-top: 0.25rem;
168
+ }
169
+
170
+ .wp-content ol ol ol {
171
+ list-style-type: lower-roman;
172
+ }
173
+
174
+ .wp-block-list.is-style-checked-list {
175
+ list-style: none;
176
+ padding-left: 0;
177
+ }
178
+
179
+ .wp-block-list.is-style-checked-list li::before {
180
+ content: "✓ ";
181
+ font-weight: 700;
182
+ }
183
+
184
+ /* Preformatted */
185
+ .wp-block-preformatted {
186
+ font-family: monospace;
187
+ font-size: 0.9em;
188
+ white-space: pre-wrap;
189
+ background: var(--wp-code-bg);
190
+ color: var(--wp-code-color);
191
+ padding: 1.25rem;
192
+ border-radius: 4px;
193
+ overflow-x: auto;
194
+ margin: 1.5rem 0;
195
+ }
196
+
197
+ /* Code */
198
+ .wp-block-code {
199
+ background: var(--wp-code-bg);
200
+ color: var(--wp-code-color);
201
+ border-radius: 4px;
202
+ margin: 1.5rem 0;
203
+ overflow-x: auto;
204
+ overflow-y: hidden;
205
+ scrollbar-width: thin;
206
+ scrollbar-color: #555 var(--wp-code-bg);
207
+ }
208
+
209
+ .wp-block-code::-webkit-scrollbar {
210
+ height: 6px;
211
+ background: var(--wp-code-bg);
212
+ }
213
+
214
+ .wp-block-code::-webkit-scrollbar-track {
215
+ background: var(--wp-code-bg);
216
+ }
217
+
218
+ .wp-block-code::-webkit-scrollbar-thumb {
219
+ background-color: #555;
220
+ border-radius: 10px;
221
+ }
222
+
223
+ .wp-block-code code {
224
+ display: block;
225
+ padding: 1.25rem;
226
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
227
+ font-size: 0.875em;
228
+ line-height: 1.6;
229
+ white-space: pre;
230
+ }
231
+
232
+ /* Inline code */
233
+ .wp-content p code,
234
+ .wp-content li code {
235
+ font-family: "SFMono-Regular", Consolas, monospace;
236
+ font-size: 0.875em;
237
+ background: #f4f4f4;
238
+ padding: 0.15em 0.4em;
239
+ border-radius: 3px;
240
+ }
241
+
242
+ /* Verse / Poetry */
243
+ .wp-block-verse {
244
+ font-family: inherit;
245
+ font-style: italic;
246
+ white-space: pre-wrap;
247
+ padding: 1rem 1.5rem;
248
+ margin: 1.5rem 0;
249
+ border-left: 3px solid var(--wp-blockquote-border);
250
+ }
251
+
252
+ /* Footnotes */
253
+ .wp-block-footnotes {
254
+ font-size: 0.85em;
255
+ color: var(--wp-caption-color);
256
+ border-top: 1px solid var(--wp-border-color);
257
+ margin-top: 2.5rem;
258
+ padding-top: 1rem;
259
+ }
260
+
261
+ .wp-block-footnotes ol {
262
+ padding-left: 1.25rem;
263
+ }
264
+
265
+ /* ─── 3. Quote & Pullquote ──────────────────────────────────────────────────── */
266
+ .wp-block-quote {
267
+ border-left: 4px solid var(--wp-blockquote-border);
268
+ margin: 2rem 0;
269
+ padding: 1rem 1.5rem;
270
+ }
271
+
272
+ .wp-block-quote p {
273
+ margin: 0 0 0.5rem;
274
+ font-style: italic;
275
+ }
276
+
277
+ .wp-block-quote cite {
278
+ display: block;
279
+ font-size: 0.85em;
280
+ color: var(--wp-caption-color);
281
+ font-style: normal;
282
+ }
283
+
284
+ .wp-block-quote.is-style-large,
285
+ .wp-block-quote.is-large {
286
+ border-left: none;
287
+ padding: 2rem 2.5rem;
288
+ text-align: center;
289
+ }
290
+
291
+ .wp-block-quote.is-style-large p,
292
+ .wp-block-quote.is-large p {
293
+ font-size: 1.4em;
294
+ font-weight: 300;
295
+ }
296
+
297
+ .wp-block-pullquote {
298
+ border-top: 4px solid var(--wp-pullquote-border);
299
+ border-bottom: 4px solid var(--wp-pullquote-border);
300
+ margin: 2rem 0;
301
+ padding: 1.5rem 0;
302
+ text-align: center;
303
+ }
304
+
305
+ .wp-block-pullquote blockquote {
306
+ margin: 0;
307
+ }
308
+
309
+ .wp-block-pullquote p {
310
+ font-size: 1.4em;
311
+ font-style: italic;
312
+ font-weight: 300;
313
+ }
314
+
315
+ .wp-block-pullquote cite {
316
+ font-size: 0.85em;
317
+ color: var(--wp-caption-color);
318
+ font-style: normal;
319
+ }
320
+
321
+ .wp-block-pullquote.is-style-solid-color {
322
+ background: #333;
323
+ color: #fff;
324
+ padding: 2rem;
325
+ }
326
+
327
+ .wp-block-pullquote.is-style-solid-color a {
328
+ color: #fff;
329
+ }
330
+
331
+ /* ─── 4. Image ──────────────────────────────────────────────────────────────── */
332
+ .wp-block-image {
333
+ margin: 1.5rem 0;
334
+ }
335
+
336
+ .wp-block-image img {
337
+ max-width: 100%;
338
+ height: auto;
339
+ display: block;
340
+ }
341
+
342
+ .wp-block-image figure {
343
+ margin: 0;
344
+ }
345
+
346
+ .wp-block-image figcaption,
347
+ .wp-block-image .wp-element-caption {
348
+ font-size: 0.85em;
349
+ color: var(--wp-caption-color);
350
+ text-align: center;
351
+ margin-top: 0.5rem;
352
+ }
353
+
354
+ /* Image style variations */
355
+ .wp-block-image.is-style-rounded img {
356
+ border-radius: 9999px;
357
+ }
358
+
359
+ .wp-block-image.is-style-default img {
360
+ border-radius: 0;
361
+ }
362
+
363
+ /* ─── 5. Gallery ───────────────────────────────────────────────────────────── */
364
+ .wp-block-gallery {
365
+ display: grid;
366
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
367
+ gap: var(--wp-gap);
368
+ margin: 1.5rem 0;
369
+ padding: 0;
370
+ list-style: none;
371
+ }
372
+
373
+ .wp-block-gallery.columns-1 { grid-template-columns: 1fr; }
374
+ .wp-block-gallery.columns-2 { grid-template-columns: repeat(2, 1fr); }
375
+ .wp-block-gallery.columns-3 { grid-template-columns: repeat(3, 1fr); }
376
+ .wp-block-gallery.columns-4 { grid-template-columns: repeat(4, 1fr); }
377
+ .wp-block-gallery.columns-5 { grid-template-columns: repeat(5, 1fr); }
378
+ .wp-block-gallery.columns-6 { grid-template-columns: repeat(6, 1fr); }
379
+
380
+ .wp-block-gallery .wp-block-image,
381
+ .wp-block-gallery figure {
382
+ margin: 0;
383
+ }
384
+
385
+ .wp-block-gallery .wp-block-image img {
386
+ width: 100%;
387
+ height: 100%;
388
+ object-fit: cover;
389
+ }
390
+
391
+ .wp-block-gallery figcaption,
392
+ .wp-block-gallery .wp-element-caption {
393
+ font-size: 0.8em;
394
+ color: var(--wp-caption-color);
395
+ text-align: center;
396
+ margin-top: 0.35rem;
397
+ }
398
+
399
+ @media (max-width: 640px) {
400
+ .wp-block-gallery.columns-3,
401
+ .wp-block-gallery.columns-4,
402
+ .wp-block-gallery.columns-5,
403
+ .wp-block-gallery.columns-6 {
404
+ grid-template-columns: repeat(2, 1fr);
405
+ }
406
+ }
407
+
408
+ /* ─── 6. Video & Audio ─────────────────────────────────────────────────────── */
409
+ .wp-block-video {
410
+ margin: 1.5rem 0;
411
+ }
412
+
413
+ .wp-block-video video {
414
+ width: 100%;
415
+ height: auto;
416
+ display: block;
417
+ }
418
+
419
+ .wp-block-video figcaption,
420
+ .wp-block-video .wp-element-caption {
421
+ font-size: 0.85em;
422
+ color: var(--wp-caption-color);
423
+ text-align: center;
424
+ margin-top: 0.5rem;
425
+ }
426
+
427
+ .wp-block-audio {
428
+ margin: 1.5rem 0;
429
+ }
430
+
431
+ .wp-block-audio audio {
432
+ width: 100%;
433
+ display: block;
434
+ }
435
+
436
+ .wp-block-audio figcaption,
437
+ .wp-block-audio .wp-element-caption {
438
+ font-size: 0.85em;
439
+ color: var(--wp-caption-color);
440
+ text-align: center;
441
+ margin-top: 0.5rem;
442
+ }
443
+
444
+ /* ─── 7. Embed (iframe / oEmbed) ───────────────────────────────────────────── */
445
+
446
+ /* 16:9 ratio wrapper — the default for YouTube, Vimeo, etc. */
447
+ .wp-block-embed {
448
+ margin: 1.5rem 0;
449
+ }
450
+
451
+ .wp-block-embed__wrapper {
452
+ position: relative;
453
+ width: 100%;
454
+ height: 0;
455
+ padding-bottom: 56.25%; /* 16:9 */
456
+ overflow: hidden;
457
+ }
458
+
459
+ .wp-block-embed__wrapper iframe,
460
+ .wp-block-embed__wrapper video,
461
+ .wp-block-embed__wrapper object,
462
+ .wp-block-embed__wrapper embed {
463
+ position: absolute;
464
+ top: 0;
465
+ left: 0;
466
+ width: 100%;
467
+ height: 100%;
468
+ border: 0;
469
+ }
470
+
471
+ /* Ratio variants */
472
+ .wp-block-embed.is-type-video.wp-embed-aspect-4-3 .wp-block-embed__wrapper,
473
+ .wp-block-embed[class*="wp-embed-aspect-4-3"] .wp-block-embed__wrapper {
474
+ padding-bottom: 75%; /* 4:3 */
475
+ }
476
+
477
+ .wp-block-embed[class*="wp-embed-aspect-1-1"] .wp-block-embed__wrapper {
478
+ padding-bottom: 100%; /* 1:1 */
479
+ }
480
+
481
+ .wp-block-embed[class*="wp-embed-aspect-9-16"] .wp-block-embed__wrapper {
482
+ padding-bottom: 177.78%; /* 9:16 vertical */
483
+ }
484
+
485
+ .wp-block-embed[class*="wp-embed-aspect-21-9"] .wp-block-embed__wrapper {
486
+ padding-bottom: 42.86%; /* 21:9 cinematic */
487
+ }
488
+
489
+ /* Rich preview cards (Twitter/X, etc.) */
490
+ .wp-block-embed.is-type-rich .wp-block-embed__wrapper {
491
+ height: auto;
492
+ padding-bottom: 0;
493
+ }
494
+
495
+ .wp-block-embed.is-type-rich .wp-block-embed__wrapper iframe {
496
+ position: static;
497
+ width: 100%;
498
+ height: auto;
499
+ }
500
+
501
+ .wp-block-embed figcaption,
502
+ .wp-block-embed .wp-element-caption {
503
+ font-size: 0.85em;
504
+ color: var(--wp-caption-color);
505
+ text-align: center;
506
+ margin-top: 0.5rem;
507
+ }
508
+
509
+ /* ─── 8. Media & Text ──────────────────────────────────────────────────────── */
510
+ .wp-block-media-text {
511
+ display: grid;
512
+ grid-template-columns: 1fr 1fr;
513
+ gap: var(--wp-gap);
514
+ align-items: center;
515
+ margin: 1.5rem 0;
516
+ }
517
+
518
+ .wp-block-media-text.has-media-on-the-right {
519
+ grid-template-columns: 1fr 1fr;
520
+ }
521
+
522
+ .wp-block-media-text.has-media-on-the-right .wp-block-media-text__media {
523
+ order: 2;
524
+ }
525
+
526
+ .wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {
527
+ order: 1;
528
+ }
529
+
530
+ .wp-block-media-text__media img,
531
+ .wp-block-media-text__media video {
532
+ width: 100%;
533
+ height: auto;
534
+ display: block;
535
+ }
536
+
537
+ .wp-block-media-text__content {
538
+ padding: 1rem;
539
+ }
540
+
541
+ .wp-block-media-text.is-stacked-on-mobile {
542
+ grid-template-columns: 1fr;
543
+ }
544
+
545
+ @media (max-width: 768px) {
546
+ .wp-block-media-text {
547
+ grid-template-columns: 1fr;
548
+ }
549
+
550
+ .wp-block-media-text.has-media-on-the-right .wp-block-media-text__media {
551
+ order: 0;
552
+ }
553
+
554
+ .wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {
555
+ order: 0;
556
+ }
557
+ }
558
+
559
+ /* ─── 9. Cover ─────────────────────────────────────────────────────────────── */
560
+ .wp-block-cover {
561
+ position: relative;
562
+ display: flex;
563
+ align-items: center;
564
+ justify-content: center;
565
+ overflow: hidden;
566
+ min-height: 430px;
567
+ margin: 1.5rem 0;
568
+ background-size: cover;
569
+ background-position: center;
570
+ }
571
+
572
+ .wp-block-cover__image-background,
573
+ .wp-block-cover__video-background {
574
+ position: absolute;
575
+ top: 0;
576
+ left: 0;
577
+ width: 100%;
578
+ height: 100%;
579
+ object-fit: cover;
580
+ z-index: 0;
581
+ }
582
+
583
+ .wp-block-cover__background,
584
+ .wp-block-cover-image__background {
585
+ position: absolute;
586
+ inset: 0;
587
+ z-index: 1;
588
+ }
589
+
590
+ .wp-block-cover__inner-container {
591
+ position: relative;
592
+ z-index: 2;
593
+ width: 100%;
594
+ max-width: var(--wp-content-max-width);
595
+ padding: 2rem;
596
+ color: #fff;
597
+ text-align: center;
598
+ }
599
+
600
+ .wp-block-cover.has-left-content .wp-block-cover__inner-container {
601
+ text-align: left;
602
+ }
603
+
604
+ .wp-block-cover.has-right-content .wp-block-cover__inner-container {
605
+ text-align: right;
606
+ }
607
+
608
+ .wp-block-cover.is-light .wp-block-cover__inner-container {
609
+ color: #333;
610
+ }
611
+
612
+ /* ─── 10. Columns & Column ─────────────────────────────────────────────────── */
613
+ .wp-block-columns {
614
+ display: flex;
615
+ flex-wrap: wrap;
616
+ gap: var(--wp-gap);
617
+ margin: 1.5rem 0;
618
+ }
619
+
620
+ .wp-block-column {
621
+ flex: 1 1 0%;
622
+ min-width: 0;
623
+ }
624
+
625
+ .wp-block-columns.is-not-stacked-on-mobile .wp-block-column {
626
+ flex-wrap: nowrap;
627
+ }
628
+
629
+ @media (max-width: 768px) {
630
+ .wp-block-columns:not(.is-not-stacked-on-mobile) {
631
+ flex-direction: column;
632
+ }
633
+
634
+ .wp-block-columns:not(.is-not-stacked-on-mobile) .wp-block-column {
635
+ flex-basis: 100% !important;
636
+ }
637
+ }
638
+
639
+ /* ─── 11. Group ────────────────────────────────────────────────────────────── */
640
+ .wp-block-group {
641
+ margin: 1.5rem 0;
642
+ }
643
+
644
+ /* Row layout */
645
+ .wp-block-group.is-layout-flex {
646
+ display: flex;
647
+ flex-wrap: wrap;
648
+ gap: var(--wp-gap);
649
+ align-items: center;
650
+ }
651
+
652
+ /* Grid layout */
653
+ .wp-block-group.is-layout-grid {
654
+ display: grid;
655
+ gap: var(--wp-gap);
656
+ }
657
+
658
+ /* ─── 12. Buttons & Button ─────────────────────────────────────────────────── */
659
+ .wp-block-buttons {
660
+ display: flex;
661
+ flex-wrap: wrap;
662
+ gap: 0.75rem;
663
+ margin: 1.5rem 0;
664
+ }
665
+
666
+ .wp-block-buttons.is-vertical {
667
+ flex-direction: column;
668
+ align-items: flex-start;
669
+ }
670
+
671
+ .wp-block-button {
672
+ display: inline-flex;
673
+ }
674
+
675
+ .wp-block-button__link {
676
+ display: inline-block;
677
+ padding: 0.65em 1.4em;
678
+ background: #333;
679
+ color: #fff;
680
+ text-decoration: none;
681
+ border-radius: 4px;
682
+ font-weight: 600;
683
+ font-size: 0.95em;
684
+ transition: opacity 0.15s ease;
685
+ cursor: pointer;
686
+ border: none;
687
+ }
688
+
689
+ .wp-block-button__link:hover {
690
+ opacity: 0.85;
691
+ color: #fff;
692
+ }
693
+
694
+ .wp-block-button.is-style-outline .wp-block-button__link {
695
+ background: transparent;
696
+ border: 2px solid currentColor;
697
+ color: inherit;
698
+ }
699
+
700
+ .wp-block-button.is-style-outline .wp-block-button__link:hover {
701
+ opacity: 0.75;
702
+ }
703
+
704
+ .wp-block-button.is-style-fill .wp-block-button__link {
705
+ background: #333;
706
+ color: #fff;
707
+ }
708
+
709
+ /* ─── 13. Table ────────────────────────────────────────────────────────────── */
710
+ .wp-block-table {
711
+ margin: 1.5rem 0;
712
+ overflow-x: auto;
713
+ }
714
+
715
+ .wp-block-table table {
716
+ width: 100%;
717
+ border-collapse: collapse;
718
+ font-size: 0.95em;
719
+ }
720
+
721
+ .wp-block-table th,
722
+ .wp-block-table td {
723
+ padding: 0.6rem 0.9rem;
724
+ border: 1px solid var(--wp-border-color);
725
+ text-align: left;
726
+ vertical-align: top;
727
+ }
728
+
729
+ .wp-block-table th {
730
+ background: #f5f5f5;
731
+ font-weight: 700;
732
+ }
733
+
734
+ .wp-block-table.is-style-stripes tbody tr:nth-child(odd) td {
735
+ background: #f9f9f9;
736
+ }
737
+
738
+ .wp-block-table.is-style-stripes th,
739
+ .wp-block-table.is-style-stripes td {
740
+ border-color: transparent;
741
+ }
742
+
743
+ .wp-block-table figcaption,
744
+ .wp-block-table .wp-element-caption {
745
+ font-size: 0.85em;
746
+ color: var(--wp-caption-color);
747
+ text-align: center;
748
+ margin-top: 0.5rem;
749
+ }
750
+
751
+ /* ─── 14. Separator & Spacer ───────────────────────────────────────────────── */
752
+ .wp-block-separator {
753
+ border: none;
754
+ border-top: 2px solid var(--wp-border-color);
755
+ margin: 2rem auto;
756
+ width: 100%;
757
+ }
758
+
759
+ .wp-block-separator.is-style-wide {
760
+ width: 100%;
761
+ }
762
+
763
+ .wp-block-separator.is-style-dots {
764
+ border: none;
765
+ text-align: center;
766
+ height: 1.5rem;
767
+ }
768
+
769
+ .wp-block-separator.is-style-dots::before {
770
+ content: "· · ·";
771
+ font-size: 1.4em;
772
+ letter-spacing: 0.6em;
773
+ color: var(--wp-caption-color);
774
+ }
775
+
776
+ .wp-block-spacer {
777
+ display: block;
778
+ }
779
+
780
+ /* ─── 15. File Download ────────────────────────────────────────────────────── */
781
+ .wp-block-file {
782
+ display: flex;
783
+ align-items: center;
784
+ gap: 1rem;
785
+ padding: 1rem;
786
+ border: 1px solid var(--wp-border-color);
787
+ border-radius: 4px;
788
+ margin: 1.5rem 0;
789
+ }
790
+
791
+ .wp-block-file .wp-block-file__content-wrapper {
792
+ flex: 1;
793
+ }
794
+
795
+ .wp-block-file .wp-block-file__textlink {
796
+ font-weight: 600;
797
+ text-decoration: none;
798
+ }
799
+
800
+ .wp-block-file .wp-block-file__textlink:hover {
801
+ text-decoration: underline;
802
+ }
803
+
804
+ .wp-block-file .wp-block-file__button {
805
+ display: inline-block;
806
+ padding: 0.5em 1em;
807
+ background: #333;
808
+ color: #fff;
809
+ text-decoration: none;
810
+ border-radius: 4px;
811
+ font-size: 0.85em;
812
+ white-space: nowrap;
813
+ }
814
+
815
+ .wp-block-file .wp-block-file__button:hover {
816
+ opacity: 0.85;
817
+ color: #fff;
818
+ }
819
+
820
+ /* ─── 16. Details / Accordion ──────────────────────────────────────────────── */
821
+
822
+ /* Native <details> block (WP 6.4+) */
823
+ .wp-block-details {
824
+ margin: 1.5rem 0;
825
+ border: 1px solid var(--wp-border-color);
826
+ border-radius: 4px;
827
+ overflow: hidden;
828
+ }
829
+
830
+ .wp-block-details > summary {
831
+ padding: 0.9rem 1.1rem;
832
+ cursor: pointer;
833
+ font-weight: 600;
834
+ user-select: none;
835
+ list-style: none;
836
+ display: flex;
837
+ align-items: center;
838
+ justify-content: space-between;
839
+ background: #f9f9f9;
840
+ }
841
+
842
+ .wp-block-details > summary::-webkit-details-marker {
843
+ display: none;
844
+ }
845
+
846
+ .wp-block-details > summary::after {
847
+ content: "+";
848
+ font-size: 1.2em;
849
+ font-weight: 300;
850
+ transition: transform 0.2s ease;
851
+ }
852
+
853
+ .wp-block-details[open] > summary::after {
854
+ content: "−";
855
+ }
856
+
857
+ .wp-block-details > :not(summary) {
858
+ padding: 0.9rem 1.1rem;
859
+ }
860
+
861
+ /* Accordion (Gutenberg Experimental — core/accordion) */
862
+ .wp-block-accordion {
863
+ margin: 1.5rem 0;
864
+ border: 1px solid var(--wp-border-color);
865
+ border-radius: 4px;
866
+ overflow: hidden;
867
+ }
868
+
869
+ .wp-block-accordion-item {
870
+ border-bottom: 1px solid var(--wp-border-color);
871
+ }
872
+
873
+ .wp-block-accordion-item:last-child {
874
+ border-bottom: none;
875
+ }
876
+
877
+ .wp-block-accordion-heading {
878
+ padding: 0.9rem 1.1rem;
879
+ font-weight: 600;
880
+ cursor: pointer;
881
+ background: #f9f9f9;
882
+ user-select: none;
883
+ }
884
+
885
+ .wp-block-accordion-panel {
886
+ padding: 1rem 1.1rem;
887
+ }
888
+
889
+ /* ─── 17. Social Icons ─────────────────────────────────────────────────────── */
890
+ .wp-block-social-links {
891
+ display: flex;
892
+ flex-wrap: wrap;
893
+ gap: 0.5rem;
894
+ padding: 0;
895
+ list-style: none;
896
+ margin: 1.5rem 0;
897
+ }
898
+
899
+ .wp-block-social-link {
900
+ display: flex;
901
+ align-items: center;
902
+ justify-content: center;
903
+ width: 36px;
904
+ height: 36px;
905
+ border-radius: 4px;
906
+ overflow: hidden;
907
+ }
908
+
909
+ .wp-block-social-link a {
910
+ display: flex;
911
+ align-items: center;
912
+ justify-content: center;
913
+ width: 100%;
914
+ height: 100%;
915
+ text-decoration: none;
916
+ }
917
+
918
+ .wp-block-social-link svg {
919
+ width: 1em;
920
+ height: 1em;
921
+ fill: currentColor;
922
+ }
923
+
924
+ /* Pill style */
925
+ .wp-block-social-links.is-style-pill-shape .wp-block-social-link {
926
+ border-radius: 9999px;
927
+ padding: 0 0.75rem;
928
+ width: auto;
929
+ }
930
+
931
+ /* Logos only (no background) */
932
+ .wp-block-social-links.is-style-logos-only .wp-block-social-link {
933
+ background: transparent !important;
934
+ }
935
+
936
+ /* Default colors */
937
+ .wp-block-social-link-anchor { color: #fff; }
938
+
939
+ /* ─── 17b. Social Embed Overrides (Twitter/X, Instagram, TikTok) ───────────── */
940
+
941
+ /*
942
+ * Social embeds inject their own blockquote before their JS loads.
943
+ * These rules style the pre-load blockquote state and override the
944
+ * injected iframe wrappers so they don't break your layout.
945
+ */
946
+
947
+ /* Twitter / X */
948
+ blockquote.twitter-tweet {
949
+ display: flex;
950
+ flex-direction: column;
951
+ border-left: 3px solid #1da1f2;
952
+ padding: 1rem 1rem 2rem 1.25rem;
953
+ margin: 1.5rem 0;
954
+ font-style: italic;
955
+ background: transparent;
956
+ }
957
+
958
+ blockquote.twitter-tweet p {
959
+ margin: 0 0 0.75rem;
960
+ }
961
+
962
+ blockquote.twitter-tweet a {
963
+ color: #1da1f2;
964
+ word-break: break-word;
965
+ }
966
+
967
+ /* Twitter embed wrapper: the injected iframe is height-intrinsic,
968
+ so we release the padding-bottom trick that applies to video embeds */
969
+ .is-provider-twitter,
970
+ .wp-block-embed-twitter {
971
+ display: flex;
972
+ }
973
+
974
+ .is-provider-twitter > .wp-block-embed__wrapper,
975
+ .wp-block-embed-twitter > .wp-block-embed__wrapper {
976
+ position: static;
977
+ height: auto;
978
+ padding-bottom: 0 !important;
979
+ width: 100%;
980
+ }
981
+
982
+ .is-provider-twitter .twitter-tweet,
983
+ .wp-block-embed-twitter .twitter-tweet {
984
+ height: 100%;
985
+ }
986
+
987
+ .is-provider-twitter iframe,
988
+ .wp-block-embed-twitter iframe {
989
+ position: static;
990
+ width: 100% !important;
991
+ max-width: 550px;
992
+ height: auto !important;
993
+ }
994
+
995
+ /* Instagram */
996
+ .instagram-media {
997
+ border-radius: 4px;
998
+ margin: 1.5rem auto !important;
999
+ max-width: 540px !important;
1000
+ }
1001
+
1002
+ /* TikTok */
1003
+ .tiktok-embed {
1004
+ border-radius: 4px;
1005
+ margin: 1.5rem auto;
1006
+ max-width: 605px;
1007
+ }
1008
+
1009
+ .tiktok-embed a {
1010
+ word-break: break-word;
1011
+ }
1012
+
1013
+ /* ─── 18. Search Block ─────────────────────────────────────────────────────── */
1014
+ .wp-block-search {
1015
+ margin: 1.5rem 0;
1016
+ }
1017
+
1018
+ .wp-block-search__inside-wrapper {
1019
+ display: flex;
1020
+ align-items: stretch;
1021
+ gap: 0;
1022
+ border: 1px solid var(--wp-border-color);
1023
+ border-radius: 4px;
1024
+ overflow: hidden;
1025
+ }
1026
+
1027
+ .wp-block-search__input {
1028
+ flex: 1;
1029
+ padding: 0.6rem 0.9rem;
1030
+ border: none;
1031
+ font-size: 1em;
1032
+ outline: none;
1033
+ background: #fff;
1034
+ }
1035
+
1036
+ .wp-block-search__button {
1037
+ padding: 0.6rem 1rem;
1038
+ background: #333;
1039
+ color: #fff;
1040
+ border: none;
1041
+ cursor: pointer;
1042
+ font-size: 0.9em;
1043
+ font-weight: 600;
1044
+ white-space: nowrap;
1045
+ }
1046
+
1047
+ .wp-block-search__button:hover {
1048
+ background: #555;
1049
+ }
1050
+
1051
+ .wp-block-search__label {
1052
+ display: block;
1053
+ font-size: 0.85em;
1054
+ font-weight: 600;
1055
+ margin-bottom: 0.35rem;
1056
+ }
1057
+
1058
+ /* ─── 19. Latest Posts / Latest Comments ───────────────────────────────────── */
1059
+ .wp-block-latest-posts {
1060
+ padding: 0;
1061
+ list-style: none;
1062
+ margin: 1.5rem 0;
1063
+ }
1064
+
1065
+ .wp-block-latest-posts__post-title {
1066
+ font-weight: 600;
1067
+ text-decoration: none;
1068
+ display: block;
1069
+ }
1070
+
1071
+ .wp-block-latest-posts__post-title:hover {
1072
+ text-decoration: underline;
1073
+ }
1074
+
1075
+ .wp-block-latest-posts__post-date {
1076
+ font-size: 0.8em;
1077
+ color: var(--wp-caption-color);
1078
+ display: block;
1079
+ margin-bottom: 0.35rem;
1080
+ }
1081
+
1082
+ .wp-block-latest-posts__post-excerpt {
1083
+ font-size: 0.9em;
1084
+ margin-top: 0.25rem;
1085
+ }
1086
+
1087
+ .wp-block-latest-posts.is-grid {
1088
+ display: grid;
1089
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
1090
+ gap: var(--wp-gap);
1091
+ }
1092
+
1093
+ .wp-block-latest-comments {
1094
+ padding: 0;
1095
+ list-style: none;
1096
+ margin: 1.5rem 0;
1097
+ }
1098
+
1099
+ .wp-block-latest-comments__comment {
1100
+ margin-bottom: 1rem;
1101
+ padding-bottom: 1rem;
1102
+ border-bottom: 1px solid var(--wp-border-color);
1103
+ }
1104
+
1105
+ .wp-block-latest-comments__comment-meta {
1106
+ font-size: 0.85em;
1107
+ color: var(--wp-caption-color);
1108
+ }
1109
+
1110
+ /* ─── 20. Math (MathML / LaTeX) — new in WordPress 6.9 ────────────────────── */
1111
+
1112
+ /*
1113
+ * The Math block renders MathML markup with wp-block-math as its wrapper.
1114
+ * Browsers that support MathML display it natively; for others, WP loads
1115
+ * MathJax or KaTeX as a polyfill. These rules ensure the wrapper doesn't
1116
+ * clip overflow (common with tall fractions/matrices) and gives it
1117
+ * appropriate vertical rhythm.
1118
+ */
1119
+
1120
+ .wp-block-math {
1121
+ margin: 1.5rem 0;
1122
+ overflow-x: auto;
1123
+ overflow-y: hidden;
1124
+ }
1125
+
1126
+ .wp-block-math math,
1127
+ .wp-block-math .math-inline {
1128
+ display: block;
1129
+ font-size: 1.1em;
1130
+ line-height: 1.6;
1131
+ }
1132
+
1133
+ /* Inline math via the inline Math format */
1134
+ .math-inline {
1135
+ display: inline;
1136
+ font-size: 1em;
1137
+ }
1138
+
1139
+ /* MathJax / KaTeX polyfill containers */
1140
+ .MathJax,
1141
+ .katex-display {
1142
+ overflow-x: auto;
1143
+ overflow-y: hidden;
1144
+ padding: 0.25rem 0;
1145
+ }
1146
+
1147
+ /* ─── 21. Navigation (minimal reset for REST API content) ──────────────────── */
1148
+ .wp-block-navigation {
1149
+ display: flex;
1150
+ flex-wrap: wrap;
1151
+ gap: 0.5rem;
1152
+ }
1153
+
1154
+ .wp-block-navigation-item {
1155
+ list-style: none;
1156
+ }
1157
+
1158
+ .wp-block-navigation-item__content {
1159
+ text-decoration: none;
1160
+ padding: 0.25rem 0.5rem;
1161
+ display: block;
1162
+ }
1163
+
1164
+ /* ─── 21. Alignment Utilities ──────────────────────────────────────────────── */
1165
+
1166
+ /* Wide alignment — breaks slightly past content column */
1167
+ .alignwide {
1168
+ max-width: var(--wp-wide-max-width);
1169
+ margin-left: auto;
1170
+ margin-right: auto;
1171
+ width: 100%;
1172
+ }
1173
+
1174
+ /* Full bleed alignment */
1175
+ .alignfull {
1176
+ width: 100vw;
1177
+ max-width: 100vw;
1178
+ margin-left: calc(50% - 50vw);
1179
+ margin-right: calc(50% - 50vw);
1180
+ }
1181
+
1182
+ /* Float alignments */
1183
+ .alignleft {
1184
+ float: left;
1185
+ margin: 0 1.5rem 1rem 0;
1186
+ max-width: 50%;
1187
+ }
1188
+
1189
+ .alignright {
1190
+ float: right;
1191
+ margin: 0 0 1rem 1.5rem;
1192
+ max-width: 50%;
1193
+ }
1194
+
1195
+ .aligncenter {
1196
+ display: block;
1197
+ margin-left: auto;
1198
+ margin-right: auto;
1199
+ }
1200
+
1201
+ /* Clearfix for float-aligned elements */
1202
+ .wp-content::after {
1203
+ content: "";
1204
+ display: table;
1205
+ clear: both;
1206
+ }
1207
+
1208
+ @media (max-width: 640px) {
1209
+ .alignleft,
1210
+ .alignright {
1211
+ float: none;
1212
+ margin: 1rem 0;
1213
+ max-width: 100%;
1214
+ }
1215
+ }
1216
+
1217
+ /* ─── 22. Text Align Helpers ───────────────────────────────────────────────── */
1218
+ .has-text-align-left { text-align: left; }
1219
+ .has-text-align-center { text-align: center; }
1220
+ .has-text-align-right { text-align: right; }
1221
+
1222
+ /* ─── 23. Color & Background Utility Classes ───────────────────────────────── */
1223
+
1224
+ /* WP generates inline styles for custom colors, but also emits utility classes
1225
+ for its named palette. We provide neutral fallbacks so layout isn't broken. */
1226
+ .has-background {
1227
+ padding: 1.25rem 1.5rem;
1228
+ }
1229
+
1230
+ /* Ensure text remains readable when WP sets background color classes */
1231
+ [class*="has-"][class*="-background-color"] {
1232
+ padding: 0.2em 0;
1233
+ }
1234
+
1235
+ /* Named palette color classes (WP default theme palette as reference) */
1236
+ .has-black-color { color: #000; }
1237
+ .has-white-color { color: #fff; }
1238
+ .has-cyan-bluish-gray-color { color: #abb8c3; }
1239
+ .has-pale-pink-color { color: #f78da7; }
1240
+ .has-vivid-red-color { color: #cf2e2e; }
1241
+ .has-luminous-vivid-orange-color { color: #ff6900; }
1242
+ .has-luminous-vivid-amber-color { color: #fcb900; }
1243
+ .has-light-green-cyan-color { color: #7bdcb5; }
1244
+ .has-vivid-green-cyan-color { color: #00d084; }
1245
+ .has-pale-cyan-blue-color { color: #8ed1fc; }
1246
+ .has-vivid-cyan-blue-color { color: #0693e3; }
1247
+ .has-vivid-purple-color { color: #9b51e0; }
1248
+
1249
+ .has-black-background-color { background-color: #000; }
1250
+ .has-white-background-color { background-color: #fff; }
1251
+ .has-cyan-bluish-gray-background-color { background-color: #abb8c3; }
1252
+ .has-pale-pink-background-color { background-color: #f78da7; }
1253
+ .has-vivid-red-background-color { background-color: #cf2e2e; }
1254
+ .has-luminous-vivid-orange-background-color { background-color: #ff6900; }
1255
+ .has-luminous-vivid-amber-background-color { background-color: #fcb900; }
1256
+ .has-light-green-cyan-background-color { background-color: #7bdcb5; }
1257
+ .has-vivid-green-cyan-background-color { background-color: #00d084; }
1258
+ .has-pale-cyan-blue-background-color { background-color: #8ed1fc; }
1259
+ .has-vivid-cyan-blue-background-color { background-color: #0693e3; }
1260
+ .has-vivid-purple-background-color { background-color: #9b51e0; }
1261
+
1262
+ /* Font size utility classes */
1263
+ .has-small-font-size { font-size: 0.8em; }
1264
+ .has-medium-font-size { font-size: 1em; }
1265
+ .has-large-font-size { font-size: 1.4em; }
1266
+ .has-x-large-font-size { font-size: 1.8em; }
1267
+ .has-xx-large-font-size { font-size: 2.4em; }
1268
+ .has-huge-font-size { font-size: 2.8em; }
1269
+
1270
+ /* ─── 24. Legacy / Classic Editor Classes ──────────────────────────────────── */
1271
+
1272
+ /* Classic block (raw TinyMCE output from pre-Gutenberg content) */
1273
+ .wp-block-freeform {
1274
+ line-height: 1.7;
1275
+ }
1276
+
1277
+ /* Legacy caption */
1278
+ .wp-caption {
1279
+ max-width: 100%;
1280
+ margin: 1rem 0;
1281
+ }
1282
+
1283
+ .wp-caption img {
1284
+ display: block;
1285
+ max-width: 100%;
1286
+ height: auto;
1287
+ }
1288
+
1289
+ .wp-caption-text,
1290
+ .wp-caption p {
1291
+ font-size: 0.85em;
1292
+ color: var(--wp-caption-color);
1293
+ text-align: center;
1294
+ margin: 0.35rem 0 0;
1295
+ }
1296
+
1297
+ /* ─── End of wp-block-styles.css ───────────────────────────────────────────── */
1298
+
1299
+ /* ─── 25. Dark Mode ────────────────────────────────────────────────────────── */
1300
+ /*
1301
+ * Dark mode is applied in two ways:
1302
+ * 1. Automatically via OS preference: @media (prefers-color-scheme: dark)
1303
+ * 2. Manually via a data attribute: [data-theme="dark"] on <html> or any ancestor
1304
+ *
1305
+ * Both selectors share identical rules via the shared mixin below.
1306
+ * The data-theme attribute takes precedence over the OS preference when present,
1307
+ * allowing a user-controlled theme toggle to override the system setting.
1308
+ *
1309
+ * Usage (manual toggle):
1310
+ * document.documentElement.setAttribute('data-theme', 'dark')
1311
+ * document.documentElement.setAttribute('data-theme', 'light')
1312
+ * document.documentElement.removeAttribute('data-theme') // fall back to OS
1313
+ */
1314
+
1315
+ @media (prefers-color-scheme: dark) {
1316
+ :root:not([data-theme="light"]) {
1317
+ --wp-border-color: #333;
1318
+ --wp-code-bg: #111;
1319
+ --wp-code-color: #f8f8f2;
1320
+ --wp-blockquote-border: #555;
1321
+ --wp-caption-color: #999;
1322
+ }
1323
+
1324
+ :root:not([data-theme="light"]) .wp-block-table th {
1325
+ background: #1a1a1a;
1326
+ }
1327
+
1328
+ :root:not([data-theme="light"]) .wp-block-table.is-style-stripes tbody tr:nth-child(odd) td {
1329
+ background: #161616;
1330
+ }
1331
+
1332
+ :root:not([data-theme="light"]) .wp-block-details > summary,
1333
+ :root:not([data-theme="light"]) .wp-block-accordion-heading {
1334
+ background: #1a1a1a;
1335
+ }
1336
+
1337
+ :root:not([data-theme="light"]) .wp-block-search__input {
1338
+ background: #1a1a1a;
1339
+ color: inherit;
1340
+ }
1341
+
1342
+ :root:not([data-theme="light"]) .wp-block-file {
1343
+ border-color: #333;
1344
+ }
1345
+
1346
+ :root:not([data-theme="light"]) .wp-content p code,
1347
+ :root:not([data-theme="light"]) .wp-content li code {
1348
+ background: #1a1a1a;
1349
+ }
1350
+
1351
+ :root:not([data-theme="light"]) .wp-block-latest-comments__comment {
1352
+ border-bottom-color: #333;
1353
+ }
1354
+ }
1355
+
1356
+ /* Manual dark theme via data-theme="dark" — overrides OS preference */
1357
+ [data-theme="dark"] {
1358
+ --wp-border-color: #333;
1359
+ --wp-code-bg: #111;
1360
+ --wp-code-color: #f8f8f2;
1361
+ --wp-blockquote-border: #555;
1362
+ --wp-caption-color: #999;
1363
+ }
1364
+
1365
+ [data-theme="dark"] .wp-block-table th {
1366
+ background: #1a1a1a;
1367
+ }
1368
+
1369
+ [data-theme="dark"] .wp-block-table.is-style-stripes tbody tr:nth-child(odd) td {
1370
+ background: #161616;
1371
+ }
1372
+
1373
+ [data-theme="dark"] .wp-block-details > summary,
1374
+ [data-theme="dark"] .wp-block-accordion-heading {
1375
+ background: #1a1a1a;
1376
+ }
1377
+
1378
+ [data-theme="dark"] .wp-block-search__input {
1379
+ background: #1a1a1a;
1380
+ color: inherit;
1381
+ }
1382
+
1383
+ [data-theme="dark"] .wp-block-file {
1384
+ border-color: #333;
1385
+ }
1386
+
1387
+ [data-theme="dark"] .wp-content p code,
1388
+ [data-theme="dark"] .wp-content li code {
1389
+ background: #1a1a1a;
1390
+ }
1391
+
1392
+ [data-theme="dark"] .wp-block-latest-comments__comment {
1393
+ border-bottom-color: #333;
1394
+ }
1395
+
1396
+ /* ─── 26. Print ────────────────────────────────────────────────────────────── */
1397
+ @media print {
1398
+ /* Remove interactive / screen-only blocks */
1399
+ .wp-block-buttons,
1400
+ .wp-block-button,
1401
+ .wp-block-search,
1402
+ .wp-block-social-links,
1403
+ .wp-block-navigation,
1404
+ .wp-block-cover__video-background {
1405
+ display: none !important;
1406
+ }
1407
+
1408
+ /* Flatten full-bleed and wide alignments */
1409
+ .alignfull,
1410
+ .alignwide {
1411
+ width: 100% !important;
1412
+ max-width: 100% !important;
1413
+ margin-left: 0 !important;
1414
+ margin-right: 0 !important;
1415
+ }
1416
+
1417
+ /* Prevent floats from breaking print layout */
1418
+ .alignleft,
1419
+ .alignright {
1420
+ float: none !important;
1421
+ max-width: 100% !important;
1422
+ margin: 1rem 0 !important;
1423
+ }
1424
+
1425
+ /* Ensure images don't overflow the page */
1426
+ .wp-block-image img,
1427
+ .wp-block-gallery .wp-block-image img,
1428
+ .wp-block-media-text__media img {
1429
+ max-width: 100% !important;
1430
+ height: auto !important;
1431
+ }
1432
+
1433
+ /* Replace embeds with a plain placeholder */
1434
+ .wp-block-embed {
1435
+ border: 1px solid #ccc;
1436
+ padding: 1rem;
1437
+ text-align: center;
1438
+ font-size: 0.85em;
1439
+ color: #666;
1440
+ }
1441
+
1442
+ .wp-block-embed__wrapper {
1443
+ position: static !important;
1444
+ height: auto !important;
1445
+ padding-bottom: 0 !important;
1446
+ }
1447
+
1448
+ .wp-block-embed__wrapper iframe {
1449
+ display: none !important;
1450
+ }
1451
+
1452
+ .wp-block-embed::before {
1453
+ content: "[Embedded media — view online]";
1454
+ display: block;
1455
+ }
1456
+
1457
+ /* Code blocks: wrap instead of scroll */
1458
+ .wp-block-code,
1459
+ .wp-block-preformatted {
1460
+ overflow: visible !important;
1461
+ white-space: pre-wrap !important;
1462
+ border: 1px solid #ccc;
1463
+ }
1464
+
1465
+ /* Columns: stack vertically */
1466
+ .wp-block-columns {
1467
+ flex-direction: column !important;
1468
+ }
1469
+
1470
+ /* Avoid page breaks inside key blocks */
1471
+ .wp-block-image,
1472
+ .wp-block-table,
1473
+ .wp-block-quote,
1474
+ .wp-block-pullquote,
1475
+ .wp-block-code {
1476
+ break-inside: avoid;
1477
+ page-break-inside: avoid;
1478
+ }
1479
+
1480
+ /* Links: show URLs after anchor text */
1481
+ .wp-content a[href]::after {
1482
+ content: " (" attr(href) ")";
1483
+ font-size: 0.8em;
1484
+ color: #555;
1485
+ word-break: break-all;
1486
+ }
1487
+
1488
+ /* Not for buttons or nav items */
1489
+ .wp-block-button__link::after,
1490
+ .wp-block-navigation-item__content::after {
1491
+ content: none !important;
1492
+ }
1493
+ }