PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.5
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.5
2.0.14 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 / assets / css / editor.css

editor.css in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.5, at assets/css/editor.css

1,434 lines 31.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Blockenberg Editor Styles
3 * Common styles for all blocks in editor
4 */
5
6 /* ========================================
7 Block Inserter: BKB Badge on Icons
8 ======================================== */
9
10 /* Target Blockenberg blocks in block inserter */
11 .block-editor-block-types-list__item[class*="blockenberg-"] .block-editor-block-types-list__item-icon,
12 .block-editor-inserter__panel-content [class*="blockenberg-"] .block-editor-block-types-list__item-icon {
13 position: relative;
14 }
15
16 .block-editor-block-types-list__item[class*="blockenberg-"] .block-editor-block-types-list__item-icon::after,
17 .block-editor-inserter__panel-content [class*="blockenberg-"] .block-editor-block-types-list__item-icon::after {
18 content: 'BKB';
19 position: absolute;
20 bottom: -2px;
21 right: -2px;
22 background: var(--wp-admin-theme-color, #007cba);
23 color: #fff;
24 font-size: 7px;
25 font-weight: 700;
26 padding: 1px 3px;
27 border-radius: 3px;
28 line-height: 1;
29 letter-spacing: 0.3px;
30 }
31
32 /* ========================================
33 Editor: Block Wrapper & Hover States
34 ======================================== */
35 .editor-styles-wrapper .bkbg-editor-wrap,
36 .block-editor-block-list__block.bkbg-editor-wrap {
37 position: relative;
38 border: 1px dashed transparent !important;
39 border-radius: 4px;
40 transition: border-color 0.15s ease;
41 }
42
43 .editor-styles-wrapper .bkbg-editor-wrap:hover,
44 .block-editor-block-list__block.bkbg-editor-wrap:hover {
45 border-color: rgba(0, 124, 186, 0.5) !important;
46 }
47
48 .editor-styles-wrapper .bkbg-editor-wrap.is-selected,
49 .editor-styles-wrapper .bkbg-editor-wrap.bkbg-block-selected,
50 .block-editor-block-list__block.bkbg-editor-wrap.is-selected {
51 border-color: #007cba !important;
52 border-style: solid !important;
53 }
54
55 /* Block label in editor */
56 .bkbg-editor-wrap::before {
57 content: attr(data-block-label);
58 position: absolute;
59 top: -10px;
60 left: 10px;
61 background: #007cba;
62 color: #fff;
63 font-size: 10px;
64 font-weight: 600;
65 padding: 2px 8px;
66 border-radius: 3px;
67 opacity: 0;
68 transition: opacity 0.15s ease;
69 pointer-events: none;
70 z-index: 10;
71 text-transform: uppercase;
72 letter-spacing: 0.5px;
73 }
74
75 .bkbg-editor-wrap:hover::before,
76 .bkbg-editor-wrap.is-selected::before {
77 opacity: 1;
78 }
79
80 /* ========================================
81 Editor: Action Bar (Hover + Selected)
82 ======================================== */
83
84 .bkbg-editor-wrap .bkbg-editor-actions {
85 position: absolute;
86 left: -1px;
87 right: -1px;
88 top: 100%;
89 bottom: auto;
90 transform: translateY(2px);
91
92 display: flex;
93 align-items: center;
94 justify-content: center;
95 gap: 10px;
96 opacity: 0;
97 pointer-events: none;
98 transition: opacity 0.15s ease, transform 0.15s ease;
99 z-index: 20;
100
101 padding: 10px 12px;
102 border-radius: 0 0 10px 10px;
103 background: rgba(255, 255, 255, 0.92);
104 border: 1px dashed rgba(0, 124, 186, 0.45);
105 box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
106 backdrop-filter: blur(8px);
107 }
108
109 .bkbg-editor-wrap:hover .bkbg-editor-actions,
110 .bkbg-editor-wrap .bkbg-editor-actions:hover,
111 .bkbg-editor-wrap.is-selected .bkbg-editor-actions,
112 .bkbg-editor-wrap.bkbg-block-selected .bkbg-editor-actions,
113 .bkbg-editor-wrap:focus-within .bkbg-editor-actions {
114 opacity: 1;
115 transform: translateY(0);
116 pointer-events: auto;
117 }
118
119 .bkbg-editor-wrap .bkbg-editor-actions .components-button {
120 gap: 6px;
121 }
122
123 /* Keep overlays usable when blocks are close together */
124 .bkbg-editor-wrap {
125 z-index: 0;
126 }
127
128 .bkbg-editor-wrap:hover,
129 .bkbg-editor-wrap.is-selected,
130 .bkbg-editor-wrap:focus-within {
131 z-index: 1;
132 }
133
134 /* ========================================
135 Layout Blocks: Section / Row / Column
136 ======================================== */
137
138 /* Layout block hierarchy visualization */
139 .editor-styles-wrapper [data-type="blockenberg/section"],
140 .editor-styles-wrapper [data-type="blockenberg/row"],
141 .editor-styles-wrapper [data-type="blockenberg/column"] {
142 position: relative;
143 }
144
145 /* Section block editor styles */
146 .editor-styles-wrapper [data-type="blockenberg/section"] {
147 margin-top: 24px;
148 margin-bottom: 24px;
149 }
150
151 .editor-styles-wrapper [data-type="blockenberg/section"]:first-child {
152 margin-top: 0;
153 }
154
155 /* Row block editor styles */
156 .editor-styles-wrapper [data-type="blockenberg/row"] {
157 margin-top: 16px;
158 margin-bottom: 16px;
159 }
160
161 .editor-styles-wrapper [data-type="blockenberg/row"]:first-child {
162 margin-top: 0;
163 }
164
165 /* Ensure row inner blocks display as flex - direct children only */
166 .editor-styles-wrapper [data-type="blockenberg/row"] > .bkbg-row > .bkbg-row__inner > .block-editor-inner-blocks > .block-editor-block-list__layout {
167 display: flex !important;
168 flex-wrap: nowrap !important;
169 align-items: stretch !important;
170 width: 100% !important;
171 overflow: hidden !important;
172 }
173
174 /* Column blocks in editor - force width constraints */
175 .editor-styles-wrapper [data-type="blockenberg/row"] > .block-editor-inner-blocks > .block-editor-block-list__layout > [data-type="blockenberg/column"] {
176 flex-shrink: 0 !important;
177 flex-grow: 0 !important;
178 min-width: 0 !important;
179 max-width: none;
180 }
181
182 /* Remove default Gutenberg margins on columns */
183 .editor-styles-wrapper [data-type="blockenberg/column"] {
184 margin-left: 0 !important;
185 margin-right: 0 !important;
186 }
187
188 /* ========================================
189 Layout Block: Visual Hierarchy Indicators
190 ======================================== */
191
192 /* Section outline */
193 .editor-styles-wrapper [data-type="blockenberg/section"] > .bkbg-section {
194 position: relative;
195 }
196
197 .editor-styles-wrapper [data-type="blockenberg/section"] > .bkbg-section::after {
198 content: '';
199 position: absolute;
200 top: -2px;
201 left: -2px;
202 right: -2px;
203 bottom: -2px;
204 border: 2px dashed transparent;
205 border-radius: 6px;
206 pointer-events: none;
207 transition: border-color 0.15s ease;
208 }
209
210 .editor-styles-wrapper [data-type="blockenberg/section"].is-selected > .bkbg-section::after,
211 .editor-styles-wrapper [data-type="blockenberg/section"]:focus-within > .bkbg-section::after {
212 border-color: rgba(59, 130, 246, 0.3);
213 }
214
215 /* Row outline */
216 .editor-styles-wrapper [data-type="blockenberg/row"] > .bkbg-row::after {
217 content: '';
218 position: absolute;
219 top: -1px;
220 left: -1px;
221 right: -1px;
222 bottom: -1px;
223 border: 1px dashed transparent;
224 border-radius: 4px;
225 pointer-events: none;
226 transition: border-color 0.15s ease;
227 }
228
229 .editor-styles-wrapper [data-type="blockenberg/row"].is-selected > .bkbg-row::after,
230 .editor-styles-wrapper [data-type="blockenberg/row"]:focus-within > .bkbg-row::after {
231 border-color: rgba(59, 130, 246, 0.4);
232 }
233
234 /* ========================================
235 Layout Block: Drag Resize Handles
236 ======================================== */
237
238 /* Ensure handles overlay is above content */
239 .editor-styles-wrapper .bkbg-row__handles-overlay {
240 z-index: 100;
241 }
242
243 /* Handle hover effect enhancement */
244 .editor-styles-wrapper .bkbg-row__resize-handle:hover .bkbg-row__resize-handle-line {
245 box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15);
246 }
247
248 /* Handle active/dragging state */
249 .editor-styles-wrapper .bkbg-row__resize-handle.is-resizing .bkbg-row__resize-handle-line {
250 box-shadow: 0 0 0 6px rgba(59, 130, 246, 0.2);
251 }
252
253 /* Cursor override during resize */
254 .editor-styles-wrapper .bkbg-row--is-resizing,
255 .editor-styles-wrapper .bkbg-row--is-resizing * {
256 cursor: col-resize !important;
257 }
258
259 /* ========================================
260 Layout Block: Responsive Mode Preview
261 ======================================== */
262
263 /* Tablet mode preview styling */
264 .editor-styles-wrapper .bkbg-row--mode-tablet {
265 background-image: repeating-linear-gradient(
266 90deg,
267 transparent,
268 transparent 10px,
269 rgba(59, 130, 246, 0.02) 10px,
270 rgba(59, 130, 246, 0.02) 20px
271 );
272 }
273
274 /* Mobile mode preview styling */
275 .editor-styles-wrapper .bkbg-row--mode-mobile {
276 background-image: repeating-linear-gradient(
277 90deg,
278 transparent,
279 transparent 8px,
280 rgba(234, 88, 12, 0.02) 8px,
281 rgba(234, 88, 12, 0.02) 16px
282 );
283 }
284
285 /* Mode badge color variants */
286 .editor-styles-wrapper .bkbg-row--mode-tablet .bkbg-row__mode-badge {
287 background: #8b5cf6;
288 }
289
290 .editor-styles-wrapper .bkbg-row--mode-mobile .bkbg-row__mode-badge {
291 background: #ea580c;
292 }
293
294 /* ========================================
295 Layout Block: Empty State
296 ======================================== */
297
298 /* Empty column placeholder */
299 .editor-styles-wrapper .bkbg-column:empty::before,
300 .editor-styles-wrapper .bkbg-column .bkbg-column__inner:empty::before {
301 content: 'Add content';
302 display: flex;
303 align-items: center;
304 justify-content: center;
305 min-height: 60px;
306 color: #94a3b8;
307 font-size: 12px;
308 font-style: italic;
309 }
310
311 /* Empty row placeholder */
312 .editor-styles-wrapper .bkbg-row .bkbg-row__inner:empty::before {
313 content: 'Add columns';
314 display: flex;
315 align-items: center;
316 justify-content: center;
317 min-height: 50px;
318 color: #94a3b8;
319 font-size: 12px;
320 font-style: italic;
321 }
322
323 /* ========================================
324 Layout Block: Toolbar & Controls
325 ======================================== */
326
327 /* Preset buttons in inspector */
328 .bkbg-row-presets {
329 display: flex;
330 flex-direction: column;
331 gap: 6px;
332 }
333
334 .bkbg-row-presets .components-button {
335 justify-content: flex-start;
336 width: 100%;
337 padding: 8px 12px;
338 }
339
340 .bkbg-row-presets .components-button:hover {
341 background: #f1f5f9;
342 }
343
344 /* Column width controls */
345 .bkbg-column-widths-controls .components-range-control__wrapper {
346 margin-bottom: 12px;
347 }
348
349 /* ========================================
350 Layout Block: Selection States
351 ======================================== */
352
353 /* When section is selected */
354 .editor-styles-wrapper [data-type="blockenberg/section"].is-selected {
355 z-index: 1;
356 }
357
358 /* When row is selected inside section */
359 .editor-styles-wrapper [data-type="blockenberg/section"] [data-type="blockenberg/row"].is-selected {
360 z-index: 2;
361 }
362
363 /* When column is selected inside row */
364 .editor-styles-wrapper [data-type="blockenberg/row"] [data-type="blockenberg/column"].is-selected {
365 z-index: 3;
366 }
367
368 /* ========================================
369 Layout Block: Appender Buttons
370 ======================================== */
371
372 /* Row appender */
373 .editor-styles-wrapper .bkbg-row .block-list-appender {
374 display: flex;
375 align-items: center;
376 justify-content: center;
377 min-width: 48px;
378 margin: 0 8px;
379 }
380
381 /* Column appender */
382 .editor-styles-wrapper .bkbg-column .block-list-appender {
383 min-height: 48px;
384 display: flex;
385 align-items: center;
386 justify-content: center;
387 }
388
389 /* Section appender */
390 .editor-styles-wrapper .bkbg-section .block-list-appender {
391 margin-top: 16px;
392 }
393
394 /* ========================================
395 Testimonials / Team Members: Carousel Nav
396 ======================================== */
397
398 /* Ensure bottom nav is clickable in editor */
399 .editor-styles-wrapper .bkbg-ts-nav-bottom .bkbg-ts-nav,
400 .editor-styles-wrapper .bkbg-tm-nav-bottom .bkbg-tm-nav {
401 position: relative;
402 z-index: 10;
403 }
404
405 .editor-styles-wrapper .bkbg-ts-nav-bottom .bkbg-ts-nav-btn,
406 .editor-styles-wrapper .bkbg-tm-nav-bottom .bkbg-tm-nav-btn {
407 position: relative;
408 z-index: 11;
409 }
410
411 /* ========================================
412 Inspector Tabs: General / Advanced
413 ======================================== */
414
415 /* TabPanel: make tab buttons stretch equally */
416 .bkbg-inspector-tab-panel > .components-tab-panel__tabs {
417 display: flex;
418 margin: 0;
419 }
420
421 .bkbg-inspector-tab-panel > .components-tab-panel__tabs .components-tab-panel__tabs-item {
422 flex: 1;
423 justify-content: center;
424 }
425
426 /* Advanced section heading */
427 .bkbg-advanced-header {
428 font-size: 11px;
429 font-weight: 600;
430 text-transform: uppercase;
431 letter-spacing: 0.5px;
432 color: #757575;
433 padding: 16px 16px 8px;
434 }
435
436 /* Separator between control groups */
437 .bkbg-adv-separator {
438 height: 1px;
439 background: #e0e0e0;
440 margin: 16px 0;
441 }
442
443 /* ---- Tab visibility: toggle block panels vs. advanced panels ---- */
444
445 /* When the Advanced tab is active, hide every PanelBody that is NOT ours */
446 .block-editor-block-inspector[data-bkbg-tab="advanced"] .components-panel__body:not(.bkbg-adv-panel) {
447 display: none !important;
448 }
449
450 /* Also hide the built-in WP "Advanced" section (HTML anchor / extra CSS classes) */
451 .block-editor-block-inspector[data-bkbg-tab="advanced"] .block-editor-block-inspector__advanced {
452 display: none !important;
453 }
454
455 /* ========================================
456 Advanced Layout Controls
457 ======================================== */
458
459 /* --- Spacing Control (Margin / Padding) --- */
460
461 .bkbg-spacing-control {
462 margin-bottom: 16px;
463 width: 100%;
464 max-width: 100%;
465 box-sizing: border-box;
466 }
467
468 .bkbg-spacing-header {
469 display: flex;
470 align-items: center;
471 gap: 8px;
472 margin-bottom: 10px;
473 }
474
475 .bkbg-spacing-label {
476 font-size: 13px;
477 font-weight: 500;
478 color: #4f5b66;
479 line-height: 1;
480 }
481
482 .bkbg-spacing-inputs {
483 display: flex;
484 align-items: flex-start;
485 gap: 0;
486 width: 100%;
487 max-width: 100%;
488 min-width: 0;
489 box-sizing: border-box;
490 }
491
492 .bkbg-spacing-side {
493 flex: 1;
494 display: flex;
495 flex-direction: column;
496 align-items: center;
497 min-width: 0;
498 }
499
500 .bkbg-spacing-side:first-child {
501 margin-left: 0;
502 }
503
504 .bkbg-spacing-input {
505 width: 100%;
506 height: 32px;
507 border: 1px solid #c8cdd4;
508 border-radius: 0;
509 border-right: 0;
510 text-align: center;
511 font-size: 13px;
512 padding: 0 4px;
513 background: #fff;
514 color: #4f5b66;
515 -moz-appearance: auto;
516 appearance: auto;
517 box-sizing: border-box;
518 }
519
520 .bkbg-spacing-side:first-child .bkbg-spacing-input {
521 border-top-left-radius: 6px;
522 border-bottom-left-radius: 6px;
523 }
524
525 .bkbg-spacing-side:last-of-type .bkbg-spacing-input {
526 border-right: 1px solid #c8cdd4;
527 }
528
529 .bkbg-spacing-side .bkbg-spacing-input {
530 border-radius: 0 !important;
531 border-right: 0;
532 }
533
534 .bkbg-spacing-side:first-child .bkbg-spacing-input {
535 border-top-left-radius: 6px !important;
536 border-bottom-left-radius: 6px !important;
537 }
538
539 .bkbg-spacing-side:last-of-type .bkbg-spacing-input {
540 border-top-right-radius: 0 !important;
541 border-bottom-right-radius: 0 !important;
542 }
543
544 .bkbg-spacing-input::-webkit-inner-spin-button,
545 .bkbg-spacing-input::-webkit-outer-spin-button {
546 opacity: 0;
547 pointer-events: none;
548 margin: 0;
549 transition: opacity .12s ease;
550 }
551
552 .bkbg-spacing-input:hover::-webkit-inner-spin-button,
553 .bkbg-spacing-input:hover::-webkit-outer-spin-button,
554 .bkbg-spacing-input:focus::-webkit-inner-spin-button,
555 .bkbg-spacing-input:focus::-webkit-outer-spin-button {
556 opacity: 1;
557 pointer-events: auto;
558 }
559
560 .bkbg-spacing-input:focus {
561 border-color: var(--wp-admin-theme-color, #007cba);
562 box-shadow: 0 0 0 1px var(--wp-admin-theme-color, #007cba);
563 outline: none;
564 }
565
566 .bkbg-spacing-side-label {
567 font-size: 11px;
568 color: #7a8594;
569 margin-top: 6px;
570 }
571
572 /* Link / Unlink Button */
573 .bkbg-link-btn.components-button {
574 min-width: 44px;
575 width: 44px;
576 height: 32px;
577 padding: 0;
578 display: flex;
579 align-items: center;
580 justify-content: center;
581 border: 1px solid #c8cdd4;
582 border-left: 0;
583 border-top-right-radius: 6px;
584 border-bottom-right-radius: 6px;
585 border-top-left-radius: 0;
586 border-bottom-left-radius: 0;
587 background: #d2d7de;
588 flex-shrink: 0;
589 flex-grow: 0;
590 flex-basis: 44px;
591 align-self: flex-start;
592 color: #1f2328;
593 }
594
595 .bkbg-link-btn.is-linked.components-button {
596 background: #ccd2da;
597 color: #1f2328;
598 }
599
600 .bkbg-link-btn.components-button:not(.is-linked) {
601 background: #ffffff;
602 color: #1f2328;
603 }
604
605 .bkbg-link-btn .dashicons,
606 .bkbg-link-btn .dashicons-before:before,
607 .bkbg-link-btn .dashicons-admin-links:before {
608 font-size: 14px;
609 width: 14px;
610 height: 14px;
611 line-height: 14px;
612 }
613
614 /* --- Device Switcher --- */
615
616 .bkbg-device-switcher {
617 position: relative;
618 display: inline-flex;
619 }
620
621 .bkbg-device-btn.components-button {
622 min-width: 24px;
623 width: 24px;
624 height: 24px;
625 padding: 0;
626 display: flex;
627 align-items: center;
628 justify-content: center;
629 border: none;
630 background: transparent;
631 color: #949494;
632 }
633
634 .bkbg-device-btn.components-button:hover {
635 background: transparent;
636 color: #e50087;
637 }
638
639 .bkbg-device-popover .components-popover__content {
640 padding: 6px;
641 border-radius: 8px;
642 }
643
644 .bkbg-device-list {
645 display: flex;
646 flex-direction: column;
647 gap: 4px;
648 padding: 2px;
649 }
650
651 .bkbg-device-option.components-button {
652 min-width: 36px;
653 width: 36px;
654 height: 36px;
655 padding: 0;
656 display: flex;
657 align-items: center;
658 justify-content: center;
659 border-radius: 4px;
660 border: none;
661 background: transparent;
662 }
663
664 .bkbg-device-option.components-button:hover {
665 background: #f0f0f0;
666 }
667
668 .bkbg-device-option.is-active.components-button {
669 background: #f5e6f0;
670 }
671
672 /* --- Unit Selector --- */
673
674 .bkbg-unit-selector {
675 position: relative;
676 display: inline-flex;
677 margin-left: auto;
678 }
679
680 .bkbg-unit-btn.components-button {
681 font-size: 13px;
682 font-weight: 500;
683 color: #4f5b66;
684 padding: 0 2px;
685 height: 24px;
686 min-width: 0;
687 border: none;
688 background: transparent;
689 line-height: 1;
690 display: inline-flex;
691 align-items: center;
692 gap: 3px;
693 }
694
695 .bkbg-unit-btn.components-button:hover {
696 color: #4f5b66;
697 background: #f0f0f0;
698 }
699
700 .bkbg-unit-value {
701 line-height: 1;
702 }
703
704 .bkbg-unit-caret.dashicons {
705 font-size: 12px;
706 width: 14px;
707 height: 14px;
708 line-height: 17px;
709 margin: 0;
710 }
711
712 .bkbg-unit-popover .components-popover__content {
713 padding: 6px 10px;
714 border-radius: 8px;
715 }
716
717 .bkbg-unit-list {
718 display: flex;
719 flex-direction: column;
720 gap: 2px;
721 padding: 2px;
722 min-width: 56px;
723 }
724
725 .bkbg-unit-option.components-button {
726 width: 100%;
727 height: 32px;
728 padding: 0 12px;
729 display: flex;
730 align-items: center;
731 justify-content: center;
732 border-radius: 4px;
733 border: none;
734 background: transparent;
735 font-size: 13px;
736 color: #4f5b66;
737 }
738
739 .bkbg-unit-option.components-button:hover {
740 background: #f0f0f0;
741 }
742
743 .bkbg-unit-option.is-active.components-button {
744 color: #e50087;
745 font-weight: 500;
746 }
747
748 /* --- Z-Index Control --- */
749
750 .bkbg-zindex-control {
751 margin-bottom: 18px;
752 display: flex;
753 gap: 12px;
754 align-items: center;
755 width: 100%;
756 max-width: 100%;
757 min-width: 0;
758 box-sizing: border-box;
759 }
760
761 .bkbg-zindex-control .bkbg-spacing-header {
762 margin-bottom: 0;
763 flex: 0 0 108px;
764 width: 108px;
765 }
766
767 .bkbg-zindex-control .bkbg-spacing-label {
768 white-space: nowrap;
769 }
770
771 .bkbg-zindex-input-wrap {
772 display: flex;
773 justify-content: flex-start;
774 flex: 1;
775 width: 100%;
776 max-width: 100%;
777 min-width: 0;
778 box-sizing: border-box;
779 }
780
781 .bkbg-zindex-input {
782 width: 100%;
783 max-width: 100%;
784 min-width: 0;
785 height: 32px;
786 border: 1px solid #c8cdd4;
787 border-radius: 6px;
788 text-align: center;
789 font-size: 13px;
790 padding: 0 8px;
791 background: #fff;
792 color: #4f5b66;
793 -moz-appearance: textfield;
794 appearance: textfield;
795 box-sizing: border-box;
796 }
797
798 .bkbg-zindex-input:focus {
799 border-color: var(--wp-admin-theme-color, #007cba);
800 box-shadow: 0 0 0 1px var(--wp-admin-theme-color, #007cba);
801 outline: none;
802 }
803
804 /* --- CSS ID / CSS Classes Control --- */
805
806 .bkbg-css-control {
807 margin-bottom: 18px;
808 display: flex;
809 gap: 12px;
810 align-items: center;
811 width: 100%;
812 max-width: 100%;
813 min-width: 0;
814 box-sizing: border-box;
815 }
816
817 .bkbg-css-control .bkbg-spacing-header {
818 margin-bottom: 0;
819 flex: 0 0 108px;
820 width: 108px;
821 }
822
823 .bkbg-css-control .bkbg-spacing-label {
824 white-space: nowrap;
825 }
826
827 .bkbg-css-input-wrap {
828 display: flex;
829 align-items: center;
830 gap: 0;
831 flex: 1;
832 width: 100%;
833 max-width: 100%;
834 min-width: 0;
835 box-sizing: border-box;
836 }
837
838 .bkbg-css-input {
839 flex: 1;
840 width: 100%;
841 max-width: 100%;
842 min-width: 0;
843 height: 32px;
844 border: 1px solid #c8cdd4;
845 border-radius: 6px;
846 font-size: 13px;
847 padding: 0 8px;
848 background: #fff;
849 color: #4f5b66;
850 box-sizing: border-box;
851 }
852
853 .bkbg-css-input:focus {
854 border-color: var(--wp-admin-theme-color, #007cba);
855 box-shadow: 0 0 0 1px var(--wp-admin-theme-color, #007cba);
856 outline: none;
857 }
858
859 /* ========================================
860 Background Panel Controls
861 ======================================== */
862
863 /* --- Normal / Hover State Tabs --- */
864
865 .bkbg-bg-state-tabs {
866 display: flex;
867 gap: 0;
868 margin-bottom: 16px;
869 border: 1px solid #e0e0e0;
870 border-radius: 6px;
871 overflow: hidden;
872 }
873
874 .bkbg-bg-state-tab.components-button {
875 flex: 1;
876 justify-content: center;
877 height: 34px;
878 font-size: 12px;
879 font-weight: 500;
880 color: #4f5b66;
881 border: none;
882 border-radius: 0;
883 background: #f7f7f7;
884 transition: background 0.15s, color 0.15s;
885 }
886
887 .bkbg-bg-state-tab.components-button:not(:last-child) {
888 border-right: 1px solid #e0e0e0;
889 }
890
891 .bkbg-bg-state-tab.components-button:hover {
892 background: #eee;
893 }
894
895 .bkbg-bg-state-tab.is-active.components-button {
896 background: #fff;
897 color: #e50087;
898 font-weight: 600;
899 }
900
901 /* --- Background Type Row --- */
902
903 .bkbg-bg-type-row {
904 display: flex;
905 align-items: center;
906 gap: 12px;
907 margin-bottom: 16px;
908 }
909
910 .bkbg-bg-type-buttons {
911 display: flex;
912 gap: 4px;
913 margin-left: auto;
914 }
915
916 .bkbg-bg-type-btn.components-button {
917 width: 30px;
918 height: 30px;
919 min-width: 30px;
920 padding: 0;
921 display: flex;
922 align-items: center;
923 justify-content: center;
924 border: 1px solid #d2d7de;
925 border-radius: 4px;
926 background: #fff;
927 color: #757575;
928 transition: all 0.15s;
929 }
930
931 .bkbg-bg-type-btn.components-button:hover {
932 border-color: #949494;
933 color: #4f5b66;
934 }
935
936 .bkbg-bg-type-btn.is-active.components-button {
937 background: #e50087;
938 border-color: #e50087;
939 color: #fff;
940 }
941
942 /* --- Color Swatch Row --- */
943
944 .bkbg-color-row {
945 display: flex;
946 align-items: center;
947 gap: 10px;
948 margin-bottom: 14px;
949 }
950
951 .bkbg-color-controls {
952 display: flex;
953 align-items: center;
954 gap: 6px;
955 margin-left: auto;
956 }
957
958 .bkbg-color-swatch {
959 width: 24px;
960 height: 24px;
961 border-radius: 50%;
962 border: 2px solid #d2d7de;
963 cursor: pointer;
964 transition: border-color 0.15s;
965 background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><defs><pattern id="c" width="8" height="8" patternUnits="userSpaceOnUse"><rect width="4" height="4" fill="%23ccc"/><rect x="4" y="4" width="4" height="4" fill="%23ccc"/></pattern></defs><rect fill="url(%23c)" width="24" height="24"/></svg>');
966 background-size: cover;
967 position: relative;
968 overflow: hidden;
969 }
970
971 .bkbg-color-swatch:hover {
972 border-color: #e50087;
973 }
974
975 .bkbg-color-popover .components-popover__content {
976 padding: 12px;
977 border-radius: 8px;
978 overflow: visible;
979 box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
980 }
981
982 .bkbg-color-popover {
983 z-index: 1000001 !important;
984 }
985
986 .bkbg-color-picker-wrap {
987 width: 240px;
988 }
989
990 .bkbg-color-picker-wrap .components-color-picker {
991 width: 100%;
992 }
993
994 .bkbg-color-clear.components-button {
995 width: 100%;
996 justify-content: center;
997 margin: 8px 0;
998 font-size: 12px;
999 }
1000
1001 /* --- Image Upload Control --- */
1002
1003 .bkbg-image-control {
1004 margin-bottom: 14px;
1005 }
1006
1007 .bkbg-image-upload-area {
1008 margin-top: 0;
1009 }
1010
1011 .bkbg-image-placeholder {
1012 display: flex;
1013 flex-direction: column;
1014 align-items: center;
1015 justify-content: center;
1016 gap: 10px;
1017 padding: 20px;
1018 background: #f0f0f0;
1019 border: 2px dashed #d2d7de;
1020 border-radius: 6px;
1021 cursor: pointer;
1022 transition: border-color 0.15s, background 0.15s;
1023 min-height: 80px;
1024 }
1025
1026 .bkbg-image-placeholder:hover {
1027 border-color: #e50087;
1028 background: #fdf2f8;
1029 }
1030
1031 .bkbg-image-plus {
1032 font-size: 28px;
1033 color: #949494;
1034 line-height: 1;
1035 font-weight: 300;
1036 }
1037
1038 .bkbg-image-choose.components-button {
1039 font-size: 12px;
1040 }
1041
1042 .bkbg-image-preview {
1043 position: relative;
1044 border-radius: 6px;
1045 overflow: hidden;
1046 border: 1px solid #d2d7de;
1047 }
1048
1049 .bkbg-image-preview img {
1050 display: block;
1051 width: 100%;
1052 height: auto;
1053 max-height: 140px;
1054 object-fit: cover;
1055 }
1056
1057 .bkbg-image-actions {
1058 display: flex;
1059 gap: 6px;
1060 padding: 8px;
1061 background: rgba(255, 255, 255, 0.9);
1062 justify-content: center;
1063 }
1064
1065 .bkbg-image-replace.components-button,
1066 .bkbg-image-remove.components-button {
1067 font-size: 11px;
1068 }
1069
1070 /* --- Range Slider Control --- */
1071
1072 .bkbg-range-control {
1073 margin-bottom: 14px;
1074 }
1075
1076 .bkbg-range-unit {
1077 font-size: 12px;
1078 font-weight: 500;
1079 color: #949494;
1080 margin-left: auto;
1081 }
1082
1083 .bkbg-range-inputs {
1084 display: flex;
1085 align-items: center;
1086 gap: 10px;
1087 }
1088
1089 .bkbg-range-slider {
1090 flex: 1;
1091 -webkit-appearance: none;
1092 appearance: none;
1093 height: 4px;
1094 background: #d2d7de;
1095 border-radius: 2px;
1096 outline: none;
1097 cursor: pointer;
1098 min-width: 0;
1099 }
1100
1101 .bkbg-range-slider::-webkit-slider-thumb {
1102 -webkit-appearance: none;
1103 appearance: none;
1104 width: 14px;
1105 height: 14px;
1106 border-radius: 50%;
1107 background: #e50087;
1108 cursor: pointer;
1109 border: 2px solid #fff;
1110 box-shadow: 0 1px 3px rgba(0,0,0,0.2);
1111 }
1112
1113 .bkbg-range-slider::-moz-range-thumb {
1114 width: 14px;
1115 height: 14px;
1116 border-radius: 50%;
1117 background: #e50087;
1118 cursor: pointer;
1119 border: 2px solid #fff;
1120 box-shadow: 0 1px 3px rgba(0,0,0,0.2);
1121 }
1122
1123 .bkbg-range-number {
1124 width: 56px;
1125 height: 32px;
1126 border: 1px solid #c8cdd4;
1127 border-radius: 6px;
1128 text-align: center;
1129 font-size: 13px;
1130 padding: 0 4px;
1131 background: #fff;
1132 color: #4f5b66;
1133 flex-shrink: 0;
1134 box-sizing: border-box;
1135 }
1136
1137 .bkbg-range-number:focus {
1138 border-color: var(--wp-admin-theme-color, #007cba);
1139 box-shadow: 0 0 0 1px var(--wp-admin-theme-color, #007cba);
1140 outline: none;
1141 }
1142
1143 /* --- Gradient Notice --- */
1144
1145 .bkbg-grad-notice {
1146 display: flex;
1147 align-items: flex-start;
1148 gap: 8px;
1149 padding: 10px 12px;
1150 background: #fff8e1;
1151 border-left: 3px solid #f59e0b;
1152 border-radius: 0 6px 6px 0;
1153 margin-bottom: 16px;
1154 font-size: 12px;
1155 line-height: 1.5;
1156 color: #78571c;
1157 }
1158
1159 .bkbg-grad-notice-icon {
1160 flex-shrink: 0;
1161 font-size: 14px;
1162 line-height: 1.3;
1163 }
1164
1165 /* --- Gradient Type Dropdown --- */
1166
1167 .bkbg-grad-type-row {
1168 display: flex;
1169 align-items: center;
1170 gap: 12px;
1171 margin-bottom: 14px;
1172 }
1173
1174 .bkbg-grad-type-select {
1175 flex: 1;
1176 min-width: 0;
1177 }
1178
1179 /* --- Transition Duration --- */
1180
1181 .bkbg-transition-control {
1182 margin-bottom: 4px;
1183 }
1184
1185 /* --- Dropdown Row Control --- */
1186
1187 .bkbg-dropdown-row {
1188 display: flex;
1189 align-items: center;
1190 gap: 12px;
1191 margin-bottom: 14px;
1192 }
1193
1194 .bkbg-dropdown-label-side {
1195 display: flex;
1196 align-items: center;
1197 gap: 6px;
1198 flex: 0 0 auto;
1199 white-space: nowrap;
1200 }
1201
1202 .bkbg-dropdown-select-side {
1203 flex: 1;
1204 min-width: 0;
1205 }
1206
1207 .bkbg-dropdown-select {
1208 width: 100%;
1209 height: 32px;
1210 border: 1px solid #c8cdd4;
1211 border-radius: 6px;
1212 font-size: 13px;
1213 padding: 0 8px;
1214 background: #fff;
1215 color: #4f5b66;
1216 cursor: pointer;
1217 box-sizing: border-box;
1218 -webkit-appearance: none;
1219 -moz-appearance: none;
1220 appearance: none;
1221 background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="6" viewBox="0 0 10 6"><path d="M0 0l5 6 5-6z" fill="%23757575"/></svg>');
1222 background-repeat: no-repeat;
1223 background-position: right 10px center;
1224 background-size: 10px 6px;
1225 padding-right: 28px;
1226 }
1227
1228 .bkbg-dropdown-select:focus {
1229 border-color: var(--wp-admin-theme-color, #007cba);
1230 box-shadow: 0 0 0 1px var(--wp-admin-theme-color, #007cba);
1231 outline: none;
1232 }
1233
1234 /* --- Custom Position / Size Inputs --- */
1235
1236 .bkbg-custom-pos-row {
1237 display: flex;
1238 gap: 8px;
1239 margin-bottom: 14px;
1240 padding-left: 0;
1241 max-width: 100%;
1242 box-sizing: border-box;
1243 }
1244
1245 .bkbg-custom-pos-field {
1246 flex: 1;
1247 display: flex;
1248 align-items: center;
1249 gap: 4px;
1250 min-width: 0;
1251 overflow: hidden;
1252 }
1253
1254 .bkbg-custom-pos-lbl {
1255 font-size: 12px;
1256 font-weight: 500;
1257 color: #949494;
1258 flex-shrink: 0;
1259 }
1260
1261 .bkbg-custom-pos-input {
1262 flex: 1;
1263 min-width: 0;
1264 width: 50px;
1265 max-width: 100%;
1266 height: 32px;
1267 border: 1px solid #c8cdd4;
1268 border-radius: 6px;
1269 text-align: center;
1270 font-size: 13px;
1271 padding: 0 4px;
1272 background: #fff;
1273 color: #4f5b66;
1274 box-sizing: border-box;
1275 -moz-appearance: textfield;
1276 appearance: textfield;
1277 }
1278
1279 .bkbg-custom-pos-input::-webkit-inner-spin-button,
1280 .bkbg-custom-pos-input::-webkit-outer-spin-button {
1281 -webkit-appearance: none;
1282 appearance: none;
1283 margin: 0;
1284 }
1285
1286 .bkbg-custom-pos-input:focus {
1287 border-color: var(--wp-admin-theme-color, #007cba);
1288 box-shadow: 0 0 0 1px var(--wp-admin-theme-color, #007cba);
1289 outline: none;
1290 }
1291
1292 .bkbg-custom-pos-unit {
1293 font-size: 12px;
1294 color: #949494;
1295 flex-shrink: 0;
1296 }
1297
1298 /* --- Box Shadow Control --- */
1299
1300 .bkbg-shadow-control {
1301 margin-bottom: 0;
1302 }
1303
1304 .bkbg-shadow-header {
1305 display: flex;
1306 align-items: center;
1307 gap: 8px;
1308 margin-bottom: 0;
1309 }
1310
1311 .bkbg-shadow-actions {
1312 display: flex;
1313 align-items: center;
1314 gap: 2px;
1315 margin-left: auto;
1316 }
1317
1318 .bkbg-shadow-reset-btn.components-button,
1319 .bkbg-shadow-toggle-btn.components-button {
1320 width: 28px;
1321 height: 28px;
1322 min-width: 28px;
1323 padding: 0;
1324 display: flex;
1325 align-items: center;
1326 justify-content: center;
1327 border: none;
1328 background: transparent;
1329 color: #757575;
1330 border-radius: 4px;
1331 transition: all 0.15s;
1332 }
1333
1334 .bkbg-shadow-reset-btn.components-button:hover,
1335 .bkbg-shadow-toggle-btn.components-button:hover {
1336 color: #e50087;
1337 background: rgba(229, 0, 135, 0.06);
1338 }
1339
1340 .bkbg-shadow-toggle-btn.is-active.components-button {
1341 background: #1e1e1e;
1342 color: #fff;
1343 }
1344
1345 .bkbg-shadow-toggle-btn.is-active.components-button:hover {
1346 background: #333;
1347 color: #fff;
1348 }
1349
1350 .bkbg-shadow-body {
1351 margin-top: 12px;
1352 padding: 14px;
1353 background: #fafafa;
1354 border: 1px solid #e8eaed;
1355 border-radius: 8px;
1356 }
1357
1358 .bkbg-shadow-body .bkbg-color-row {
1359 margin-bottom: 12px;
1360 }
1361
1362 .bkbg-shadow-body .bkbg-range-control {
1363 margin-bottom: 10px;
1364 }
1365
1366 .bkbg-shadow-body .bkbg-dropdown-row {
1367 margin-bottom: 0;
1368 }
1369
1370 /* ========================================
1371 Responsive Panel
1372 ======================================== */
1373
1374 .bkbg-responsive-row {
1375 display: flex;
1376 align-items: center;
1377 justify-content: space-between;
1378 padding: 12px 0;
1379 border-bottom: 1px solid #eee;
1380 }
1381
1382 .bkbg-responsive-row:last-child {
1383 border-bottom: none;
1384 }
1385
1386 .bkbg-responsive-label {
1387 font-size: 13px;
1388 color: #1e1e1e;
1389 font-weight: 400;
1390 }
1391
1392 .bkbg-responsive-toggle {
1393 display: flex;
1394 align-items: center;
1395 gap: 8px;
1396 cursor: pointer;
1397 user-select: none;
1398 }
1399
1400 .bkbg-toggle-track {
1401 width: 36px;
1402 height: 20px;
1403 background: #ccc;
1404 border-radius: 10px;
1405 position: relative;
1406 transition: background 0.2s ease;
1407 }
1408
1409 .bkbg-responsive-toggle.is-active .bkbg-toggle-track {
1410 background: var(--wp-admin-theme-color, #007cba);
1411 }
1412
1413 .bkbg-toggle-thumb {
1414 width: 16px;
1415 height: 16px;
1416 background: #fff;
1417 border-radius: 50%;
1418 position: absolute;
1419 top: 2px;
1420 left: 2px;
1421 transition: transform 0.2s ease;
1422 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
1423 }
1424
1425 .bkbg-responsive-toggle.is-active .bkbg-toggle-thumb {
1426 transform: translateX(16px);
1427 }
1428
1429 .bkbg-toggle-label {
1430 font-size: 12px;
1431 color: #757575;
1432 min-width: 30px;
1433 }
1434