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 / assets / css / editor.css

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

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