PluginProbe
Search Atlas SEO – OTTO AI SEO Automation for WordPress / trunk
Search Atlas SEO – OTTO AI SEO Automation for WordPress vtrunk
2.6.26 2.6.25 2.6.24 2.6.23 2.6.22 2.6.21 2.6.20 2.6.19 2.6.18 2.6.17 2.6.16 2.6.15 2.6.14 2.6.13 2.6.12 2.6.11 2.6.10 2.6.9 2.6.8 2.6.7 2.6.6 2.6.5 2.6.4 2.6.3 2.5.23 All 138 releases
metasync / admin / css / metasync-html-editor.css

metasync-html-editor.css in Search Atlas SEO – OTTO AI SEO Automation for WordPress trunk, at admin/css/metasync-html-editor.css

807 lines 15.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * MetaSync HTML Visual Editor Styles
3 *
4 * Custom styling for the GrapesJS-based visual editor
5 */
6
7 /* Editor Wrapper */
8 .metasync-html-editor-wrapper {
9 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
10 }
11
12 /* Editor Header */
13 .metasync-editor-header {
14 display: flex;
15 align-items: center;
16 justify-content: space-between;
17 background: #23282d;
18 border-bottom: 1px solid #1a1e23;
19 padding: 12px 20px;
20 height: 60px;
21 box-sizing: border-box;
22 }
23
24 .metasync-editor-header-left,
25 .metasync-editor-header-center,
26 .metasync-editor-header-right {
27 display: flex;
28 align-items: center;
29 gap: 16px;
30 }
31
32 .metasync-editor-header-left {
33 flex: 1;
34 }
35
36 .metasync-editor-header-center {
37 flex: 0 1 auto;
38 }
39
40 .metasync-editor-header-right {
41 flex: 0 1 auto;
42 }
43
44 /* Back Button */
45 .metasync-back-button {
46 display: inline-flex;
47 align-items: center;
48 gap: 6px;
49 color: #a7aaad;
50 text-decoration: none;
51 font-size: 14px;
52 padding: 6px 12px;
53 border-radius: 4px;
54 transition: all 0.2s;
55 }
56
57 .metasync-back-button:hover {
58 color: #ffffff;
59 background: rgba(255, 255, 255, 0.05);
60 }
61
62 .metasync-back-button .dashicons {
63 font-size: 18px;
64 width: 18px;
65 height: 18px;
66 }
67
68 /* Page Title */
69 .metasync-page-title {
70 display: flex;
71 align-items: center;
72 gap: 10px;
73 color: #ffffff;
74 font-size: 15px;
75 }
76
77 .metasync-page-title strong {
78 font-weight: 600;
79 max-width: 300px;
80 white-space: nowrap;
81 overflow: hidden;
82 text-overflow: ellipsis;
83 }
84
85 .metasync-editor-badge {
86 display: inline-flex;
87 align-items: center;
88 gap: 4px;
89 padding: 4px 10px;
90 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
91 color: #ffffff;
92 border-radius: 10px;
93 font-size: 11px;
94 font-weight: 700;
95 text-transform: uppercase;
96 letter-spacing: 0.5px;
97 }
98
99 /* Status Indicator */
100 .metasync-editor-status {
101 display: flex;
102 align-items: center;
103 gap: 8px;
104 padding: 6px 14px;
105 background: rgba(255, 255, 255, 0.05);
106 border-radius: 4px;
107 }
108
109 .metasync-status-indicator {
110 width: 8px;
111 height: 8px;
112 border-radius: 50%;
113 background: #46b450;
114 animation: pulse 2s ease-in-out infinite;
115 }
116
117 .metasync-status-indicator.unsaved {
118 background: #ffb900;
119 animation: none;
120 }
121
122 .metasync-status-indicator.saving {
123 background: #0073aa;
124 animation: spin 1s linear infinite;
125 }
126
127 .metasync-status-indicator.saved {
128 background: #46b450;
129 }
130
131 .metasync-status-indicator.error {
132 background: #dc3232;
133 animation: none;
134 }
135
136 .metasync-status-indicator.ready {
137 background: #72aee6;
138 }
139
140 .metasync-status-text {
141 color: #a7aaad;
142 font-size: 13px;
143 font-weight: 500;
144 }
145
146 @keyframes pulse {
147 0%, 100% {
148 opacity: 1;
149 }
150 50% {
151 opacity: 0.5;
152 }
153 }
154
155 @keyframes spin {
156 from {
157 transform: rotate(0deg);
158 }
159 to {
160 transform: rotate(360deg);
161 }
162 }
163
164 /* Editor Buttons */
165 .metasync-editor-header-right .button {
166 display: inline-flex;
167 align-items: center;
168 gap: 6px;
169 height: 36px;
170 padding: 0 16px;
171 font-size: 13px;
172 font-weight: 500;
173 border: none;
174 border-radius: 4px;
175 cursor: pointer;
176 transition: all 0.2s;
177 }
178
179 .metasync-editor-header-right .button .dashicons {
180 font-size: 16px;
181 width: 16px;
182 height: 16px;
183 }
184
185 .metasync-preview-button {
186 background: #2c3338;
187 color: #ffffff;
188 }
189
190 .metasync-preview-button:hover {
191 background: #3c434a;
192 color: #ffffff;
193 }
194
195 .metasync-save-button {
196 background: #2271b1;
197 color: #ffffff;
198 }
199
200 .metasync-save-button:hover {
201 background: #135e96;
202 color: #ffffff;
203 }
204
205 .metasync-save-button:disabled {
206 opacity: 0.6;
207 cursor: not-allowed;
208 }
209
210 /* Editor Container */
211 .metasync-editor-workspace {
212 display: flex;
213 align-items: stretch;
214 height: calc(100vh - 112px);
215 }
216
217 .metasync-editor-container {
218 background: #1e1e1e;
219 flex: 1 1 auto;
220 min-width: 0;
221 position: relative;
222 }
223
224 /* Sidebar holding the editor's own manager panels. */
225 .metasync-editor-sidebar {
226 flex: 0 0 320px;
227 width: 320px;
228 display: flex;
229 flex-direction: column;
230 background: #23282d;
231 border-left: 1px solid #1a1e23;
232 overflow-y: auto;
233 }
234
235 .metasync-editor-panel {
236 flex: 1 1 auto;
237 min-height: 0;
238 }
239
240 .metasync-editor-panel[hidden] {
241 display: none;
242 }
243
244 /* Selected-element indicator */
245 .metasync-selected-element {
246 padding: 16px;
247 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
248 color: #ffffff;
249 font-size: 13px;
250 font-weight: 600;
251 border-bottom: 1px solid #1a1e23;
252 }
253
254 .metasync-selected-element[hidden] {
255 display: none;
256 }
257
258 .metasync-selected-element-label {
259 font-size: 11px;
260 opacity: 0.8;
261 margin-bottom: 4px;
262 text-transform: uppercase;
263 letter-spacing: 0.5px;
264 }
265
266 /* Panel switcher */
267 .metasync-editor-panel-switcher {
268 display: flex;
269 flex-direction: row;
270 background: #2c3338;
271 border-bottom: 1px solid #1a1e23;
272 }
273
274 .metasync-panel-switch {
275 flex: 1;
276 display: flex;
277 flex-direction: column;
278 align-items: center;
279 justify-content: center;
280 gap: 4px;
281 padding: 12px 8px;
282 color: #a7aaad;
283 background: transparent;
284 border: none;
285 border-right: 1px solid #1a1e23;
286 cursor: pointer;
287 font-size: 11px;
288 }
289
290 .metasync-panel-switch:last-child {
291 border-right: none;
292 }
293
294 .metasync-panel-switch:hover {
295 color: #ffffff;
296 background: rgba(255, 255, 255, 0.06);
297 }
298
299 .metasync-panel-switch.is-active {
300 color: #ffffff;
301 background: rgba(255, 255, 255, 0.12);
302 box-shadow: inset 0 -2px 0 #2271b1;
303 }
304
305 .metasync-panel-switch .dashicons {
306 font-size: 18px;
307 width: 18px;
308 height: 18px;
309 }
310
311 /* The canvas fills the space left of the sidebar. */
312 #metasync-gjs-editor .gjs-cv-canvas {
313 width: 100%;
314 }
315
316 /* GrapesJS Customization */
317 .gjs-pn-panel {
318 background: #23282d;
319 border-right: 1px solid #1a1e23;
320 }
321
322 .gjs-pn-btn {
323 color: #a7aaad;
324 }
325
326 .gjs-pn-btn:hover,
327 .gjs-pn-btn.gjs-pn-active {
328 color: #ffffff;
329 background: rgba(255, 255, 255, 0.1);
330 }
331
332 .gjs-cv-canvas {
333 background: #f0f0f1;
334 }
335
336 .gjs-frame-wrapper {
337 border: none;
338 }
339
340 .gjs-block {
341 background: #2c3338;
342 border: 1px solid #3c434a;
343 color: #ffffff;
344 }
345
346 .gjs-block:hover {
347 background: #3c434a;
348 border-color: #667eea;
349 }
350
351 .gjs-field input,
352 .gjs-field select,
353 .gjs-field textarea {
354 background: #2c3338;
355 color: #ffffff;
356 border: 1px solid #3c434a;
357 }
358
359 .gjs-field input:focus,
360 .gjs-field select:focus,
361 .gjs-field textarea:focus {
362 border-color: #667eea;
363 outline: none;
364 }
365
366 .gjs-layer {
367 background: #2c3338;
368 color: #ffffff;
369 }
370
371 .gjs-layer:hover {
372 background: #3c434a;
373 }
374
375 .gjs-sm-sector-title {
376 background: #2c3338;
377 color: #ffffff;
378 border-bottom: 1px solid #3c434a;
379 }
380
381 .gjs-sm-property {
382 background: #23282d;
383 border-bottom: 1px solid #1a1e23;
384 }
385
386 .gjs-sm-label {
387 color: #a7aaad;
388 }
389
390 /* Responsive Adjustments */
391 @media screen and (max-width: 1280px) {
392 .metasync-page-title strong {
393 max-width: 200px;
394 }
395 }
396
397 @media screen and (max-width: 960px) {
398 .metasync-editor-header {
399 flex-wrap: wrap;
400 height: auto;
401 gap: 12px;
402 }
403
404 .metasync-editor-header-left,
405 .metasync-editor-header-center,
406 .metasync-editor-header-right {
407 flex: 0 1 auto;
408 }
409
410 .metasync-page-title {
411 flex-direction: column;
412 align-items: flex-start;
413 gap: 4px;
414 }
415 }
416
417 @media screen and (max-width: 782px) {
418 .metasync-editor-header {
419 padding: 10px 16px;
420 }
421
422 .metasync-back-button,
423 .metasync-page-title,
424 .metasync-editor-status,
425 .metasync-editor-header-right .button {
426 font-size: 12px;
427 }
428
429 .metasync-editor-header-right .button {
430 height: 32px;
431 padding: 0 12px;
432 }
433
434 .metasync-editor-container {
435 height: calc(100vh - 106px);
436 }
437 }
438
439 /* Loading State */
440 .metasync-editor-loading {
441 display: flex;
442 align-items: center;
443 justify-content: center;
444 height: 100%;
445 color: #a7aaad;
446 font-size: 16px;
447 }
448
449 .metasync-editor-loading::before {
450 content: '';
451 width: 32px;
452 height: 32px;
453 margin-right: 12px;
454 border: 3px solid #3c434a;
455 border-top-color: #667eea;
456 border-radius: 50%;
457 animation: spin 0.8s linear infinite;
458 }
459
460 /* Enhanced Sidebar Panels */
461
462 /* Style Manager Enhancements */
463 .gjs-sm-sectors,
464 .metasync-editor-sidebar .gjs-sm-sectors {
465 background: #23282d;
466 padding: 0;
467 display: block !important;
468 visibility: visible !important;
469 opacity: 1 !important;
470 height: auto !important;
471 }
472
473 .gjs-sm-sector {
474 border: none;
475 border-bottom: 1px solid #1a1e23;
476 margin: 0;
477 }
478
479 .gjs-sm-sector-title {
480 background: #2c3338;
481 color: #ffffff;
482 padding: 14px 16px;
483 font-size: 13px;
484 font-weight: 600;
485 border-bottom: 1px solid #1a1e23;
486 cursor: pointer;
487 display: flex;
488 align-items: center;
489 justify-content: space-between;
490 transition: all 0.2s;
491 }
492
493 .gjs-sm-sector-title:hover {
494 background: #3c434a;
495 }
496
497 .gjs-sm-sector.gjs-sm-open .gjs-sm-sector-title {
498 background: linear-gradient(135deg, rgba(102, 126, 234, 0.2) 0%, rgba(118, 75, 162, 0.2) 100%);
499 color: #ffffff;
500 border-bottom-color: #667eea;
501 }
502
503 .gjs-sm-properties {
504 background: #23282d;
505 padding: 8px 0;
506 }
507
508 .gjs-sm-property {
509 background: transparent;
510 border-bottom: 1px solid rgba(255, 255, 255, 0.05);
511 padding: 10px 16px;
512 }
513
514 .gjs-sm-property:last-child {
515 border-bottom: none;
516 }
517
518 .gjs-sm-label {
519 color: #a7aaad;
520 font-size: 12px;
521 font-weight: 500;
522 margin-bottom: 6px;
523 }
524
525 .gjs-sm-field input,
526 .gjs-sm-field select {
527 background: #2c3338;
528 border: 1px solid #3c434a;
529 color: #ffffff;
530 padding: 6px 10px;
531 border-radius: 4px;
532 font-size: 13px;
533 width: 100%;
534 transition: all 0.2s;
535 }
536
537 .gjs-sm-field input:focus,
538 .gjs-sm-field select:focus {
539 border-color: #667eea;
540 outline: none;
541 box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.2);
542 }
543
544 /* Color Picker Enhancement */
545 .gjs-field-color {
546 display: flex;
547 gap: 8px;
548 }
549
550 .gjs-field-color input[type="color"] {
551 width: 50px;
552 height: 34px;
553 padding: 2px;
554 border-radius: 4px;
555 cursor: pointer;
556 }
557
558 .gjs-field-color input[type="text"] {
559 flex: 1;
560 }
561
562 /* Select Presets Enhancement */
563 .gjs-sm-stack {
564 display: flex;
565 flex-wrap: wrap;
566 gap: 6px;
567 margin-top: 8px;
568 }
569
570 .gjs-sm-stack .gjs-sm-layer {
571 flex: 0 0 calc(50% - 3px);
572 background: #2c3338;
573 border: 1px solid #3c434a;
574 color: #ffffff;
575 padding: 8px 10px;
576 border-radius: 4px;
577 font-size: 11px;
578 text-align: center;
579 cursor: pointer;
580 transition: all 0.2s;
581 }
582
583 .gjs-sm-stack .gjs-sm-layer:hover {
584 background: #3c434a;
585 border-color: #667eea;
586 transform: translateY(-1px);
587 }
588
589 .gjs-sm-stack .gjs-sm-layer.gjs-sm-active {
590 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
591 border-color: #667eea;
592 color: #ffffff;
593 }
594
595 /* Trait Manager (Settings Panel) */
596 .gjs-trt-traits,
597 .metasync-editor-sidebar .gjs-trt-traits {
598 background: #23282d;
599 padding: 16px;
600 display: block !important;
601 visibility: visible !important;
602 opacity: 1 !important;
603 }
604
605 .gjs-trt-trait {
606 margin-bottom: 16px;
607 }
608
609 .gjs-trt-trait__label {
610 color: #a7aaad;
611 font-size: 12px;
612 font-weight: 600;
613 text-transform: uppercase;
614 letter-spacing: 0.5px;
615 margin-bottom: 6px;
616 display: block;
617 }
618
619 .gjs-trt-trait input,
620 .gjs-trt-trait select,
621 .gjs-trt-trait textarea {
622 background: #2c3338;
623 border: 1px solid #3c434a;
624 color: #ffffff;
625 padding: 8px 12px;
626 border-radius: 4px;
627 font-size: 13px;
628 width: 100%;
629 transition: all 0.2s;
630 }
631
632 .gjs-trt-trait input:focus,
633 .gjs-trt-trait select:focus,
634 .gjs-trt-trait textarea:focus {
635 border-color: #667eea;
636 outline: none;
637 box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.2);
638 }
639
640 .gjs-trt-trait textarea {
641 min-height: 80px;
642 font-family: 'Courier New', monospace;
643 resize: vertical;
644 }
645
646 /* Layer Manager */
647 .gjs-layer-manager,
648 .gjs-layers,
649 .metasync-editor-sidebar .gjs-layer-manager,
650 .metasync-editor-sidebar .gjs-layers {
651 background: #23282d;
652 padding: 8px;
653 display: block !important;
654 visibility: visible !important;
655 opacity: 1 !important;
656 }
657
658 .gjs-layer {
659 background: #2c3338;
660 border: 1px solid #3c434a;
661 color: #ffffff;
662 margin-bottom: 4px;
663 border-radius: 4px;
664 transition: all 0.2s;
665 }
666
667 .gjs-layer:hover {
668 background: #3c434a;
669 border-color: #667eea;
670 }
671
672 .gjs-layer.gjs-selected {
673 background: linear-gradient(135deg, rgba(102, 126, 234, 0.3) 0%, rgba(118, 75, 162, 0.3) 100%);
674 border-color: #667eea;
675 }
676
677 .gjs-layer__title {
678 color: #ffffff;
679 font-size: 12px;
680 }
681
682 /* Block Manager */
683 .gjs-blocks-c,
684 .metasync-editor-sidebar .gjs-blocks-c {
685 background: #23282d !important;
686 padding: 16px !important;
687 display: grid !important;
688 grid-template-columns: repeat(2, 1fr) !important;
689 gap: 12px !important;
690 visibility: visible !important;
691 opacity: 1 !important;
692 }
693
694 .gjs-block {
695 background: #2c3338;
696 border: 1px solid #3c434a;
697 border-radius: 6px;
698 padding: 16px 12px;
699 text-align: center;
700 cursor: pointer;
701 transition: all 0.2s;
702 }
703
704 .gjs-block:hover {
705 background: #3c434a;
706 border-color: #667eea;
707 transform: translateY(-2px);
708 box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
709 }
710
711 .gjs-block__media {
712 font-size: 32px;
713 margin-bottom: 8px;
714 }
715
716 .gjs-block-label {
717 color: #ffffff;
718 font-size: 11px;
719 font-weight: 600;
720 text-transform: uppercase;
721 letter-spacing: 0.5px;
722 }
723
724 /* Slider Enhancement */
725 input[type="range"] {
726 -webkit-appearance: none;
727 width: 100%;
728 height: 6px;
729 border-radius: 3px;
730 background: #3c434a;
731 outline: none;
732 }
733
734 input[type="range"]::-webkit-slider-thumb {
735 -webkit-appearance: none;
736 appearance: none;
737 width: 16px;
738 height: 16px;
739 border-radius: 50%;
740 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
741 cursor: pointer;
742 transition: all 0.2s;
743 }
744
745 input[type="range"]::-webkit-slider-thumb:hover {
746 transform: scale(1.2);
747 box-shadow: 0 0 8px rgba(102, 126, 234, 0.5);
748 }
749
750 input[type="range"]::-moz-range-thumb {
751 width: 16px;
752 height: 16px;
753 border-radius: 50%;
754 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
755 cursor: pointer;
756 border: none;
757 transition: all 0.2s;
758 }
759
760 input[type="range"]::-moz-range-thumb:hover {
761 transform: scale(1.2);
762 box-shadow: 0 0 8px rgba(102, 126, 234, 0.5);
763 }
764
765 /* Selection Highlight */
766 .gjs-cv-canvas [data-gjs-type]:hover {
767 outline: 2px dashed #667eea;
768 outline-offset: 2px;
769 }
770
771 .gjs-cv-canvas .gjs-selected {
772 outline: 2px solid #667eea !important;
773 outline-offset: 2px;
774 position: relative;
775 }
776
777 /* Tooltip Enhancement */
778 .gjs-tooltip {
779 background: #2c3338;
780 color: #ffffff;
781 border: 1px solid #667eea;
782 border-radius: 4px;
783 padding: 6px 10px;
784 font-size: 11px;
785 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
786 }
787
788 /* Transient action notice (upload/save failures, expired session).
789 Pinned below the editor header; the script toggles the hidden attr. */
790 .metasync-editor-notice {
791 position: fixed;
792 top: 80px;
793 left: 50%;
794 transform: translateX(-50%);
795 z-index: 100001;
796 max-width: 520px;
797 padding: 10px 18px;
798 background: #2c3338;
799 border: 1px solid #d63638;
800 border-left-width: 4px;
801 border-radius: 4px;
802 color: #ffffff;
803 font-size: 13px;
804 line-height: 1.5;
805 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
806 }
807