PluginProbe ʕ •ᴥ•ʔ
Email Encoder – Protect Email Addresses and Phone Numbers / 2.5.1
Email Encoder – Protect Email Addresses and Phone Numbers v2.5.1
2.5.2 2.5.1 2.5.0 2.4.8 trunk 0.10 0.11 0.12 0.20 0.21 0.22 0.30 0.31 0.32 0.40 0.41 0.42 0.50 0.60 0.70 0.71 0.80 1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 1.2.1 1.3.0 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.5 1.5.2 1.51 1.53 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7
email-encoder-bundle / assets / css / style-admin.css
email-encoder-bundle / assets / css Last commit date
style-admin.css 2 months ago style.css 6 months ago
style-admin.css
974 lines
1 /* Email Encoder — Modern Admin Settings */
2
3 :root {
4 --eeb-primary: #3858e9;
5 --eeb-primary-hover: #2d47c0;
6 --eeb-primary-light: rgba(56, 88, 233, 0.08);
7 --eeb-card: #ffffff;
8 --eeb-border: #e2e4e7;
9 --eeb-border-light: #f0f0f1;
10 --eeb-text: #1d2327;
11 --eeb-text-secondary: #646970;
12 --eeb-text-muted: #8c8f94;
13 --eeb-radius: 10px;
14 --eeb-radius-sm: 6px;
15 --eeb-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
16 --eeb-focus-ring: 0 0 0 3px var(--eeb-primary-light);
17 --eeb-transition: 0.2s ease;
18 }
19
20 .eeb-wrap {
21 max-width: none;
22 margin: 20px 20px 0 2px;
23 }
24
25 /* Page header — logo + name + version pill on the left, action icons on the right */
26
27 .eeb-page-header {
28 display: flex;
29 align-items: center;
30 justify-content: space-between;
31 gap: 16px;
32 margin-bottom: 24px;
33 }
34
35 .eeb-brand {
36 display: flex;
37 align-items: center;
38 gap: 16px;
39 min-width: 0;
40 }
41
42 .eeb-brand-meta {
43 min-width: 0;
44 }
45
46 .eeb-brand-logo {
47 display: flex;
48 align-items: center;
49 justify-content: center;
50 width: 48px;
51 height: 48px;
52 border-radius: 12px;
53 background: var(--eeb-card);
54 box-shadow: var(--eeb-shadow);
55 flex-shrink: 0;
56 }
57
58 .eeb-brand-logo img {
59 width: 32px;
60 height: 32px;
61 object-fit: contain;
62 }
63
64 .eeb-page-header h1 {
65 display: flex;
66 align-items: center;
67 gap: 10px;
68 font-size: 24px;
69 font-weight: 700;
70 color: var(--eeb-text);
71 margin: 0 0 2px;
72 padding: 0;
73 letter-spacing: -0.3px;
74 line-height: 1.2;
75 }
76
77 .eeb-page-header p {
78 font-size: 13px;
79 color: var(--eeb-text-secondary);
80 margin: 0;
81 }
82
83 .eeb-brand-version {
84 display: inline-flex;
85 align-items: center;
86 font-size: 11px;
87 font-weight: 600;
88 color: var(--eeb-text-secondary);
89 background: var(--eeb-border-light);
90 padding: 3px 8px;
91 border-radius: 999px;
92 letter-spacing: 0.2px;
93 }
94
95 /* Header action buttons (Email Checker, Docs, Copy Support Info, etc) */
96
97 .eeb-header-actions {
98 display: flex;
99 align-items: center;
100 gap: 6px;
101 flex-shrink: 0;
102 }
103
104 .eeb-action-btn {
105 position: relative;
106 display: inline-flex;
107 align-items: center;
108 justify-content: center;
109 width: 38px;
110 height: 38px;
111 border-radius: 10px;
112 background: var(--eeb-card);
113 border: 1px solid var(--eeb-border);
114 box-shadow: var(--eeb-shadow);
115 color: var(--eeb-text-secondary);
116 text-decoration: none;
117 cursor: pointer;
118 transition: color var(--eeb-transition), border-color var(--eeb-transition), background var(--eeb-transition);
119 }
120
121 .eeb-action-btn:hover,
122 .eeb-action-btn:focus-visible {
123 color: var(--eeb-primary);
124 border-color: var(--eeb-primary);
125 background: var(--eeb-primary-light);
126 outline: none;
127 }
128
129 /* Dashicon sizing for the larger 18px icons (header buttons + tab nav).
130 Tooltip (i) icons are smaller and styled separately with the .eeb-tooltip block. */
131 .eeb-action-btn .dashicons,
132 .eeb-tab .dashicons {
133 font-size: 18px;
134 width: 18px;
135 height: 18px;
136 line-height: 18px;
137 }
138
139 .eeb-tab .dashicons {
140 flex-shrink: 0;
141 }
142
143 .eeb-action-btn--review {
144 color: #f59e0b;
145 }
146
147 .eeb-action-btn--review:hover,
148 .eeb-action-btn--review:focus-visible {
149 color: #f59e0b;
150 border-color: #f59e0b;
151 background: rgba(245, 158, 11, 0.08);
152 }
153
154 /* Brief success state after Copy Support Info — swaps to a check icon */
155 .eeb-action-btn--copied,
156 .eeb-action-btn--copied:hover,
157 .eeb-action-btn--copied:focus-visible {
158 color: #2e7d32;
159 border-color: #2e7d32;
160 background: #f1f8f3;
161 }
162
163 /* Action button tooltip styles live with the .eeb-tooltip-text block below
164 (they share the same dark-pill look — only padding + max-width differ). */
165
166 /* Save / status toast — Divi-style centered overlay that briefly confirms
167 a save (or error) and fades out. Replaces the top-of-page banner. */
168
169 .eeb-save-toast {
170 position: fixed;
171 top: 50%;
172 left: 50%;
173 z-index: 99999;
174 display: flex;
175 align-items: center;
176 justify-content: center;
177 width: 80px;
178 height: 80px;
179 border-radius: 50%;
180 box-shadow: 0 8px 28px rgba(0, 0, 0, 0.12);
181 opacity: 0;
182 pointer-events: none;
183 background: #e8f3ea;
184 color: #2e7d32;
185 animation: eeb-save-toast 1.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
186 }
187
188 .eeb-save-toast[data-status="info"] { background: #e6f0fa; color: #1976d2; }
189 .eeb-save-toast[data-status="warning"] { background: #fdf1dd; color: #f57c00; }
190 .eeb-save-toast[data-status="error"] { background: #fbe3e2; color: #c62828; }
191
192 .eeb-save-toast .dashicons {
193 font-size: 40px;
194 width: 40px;
195 height: 40px;
196 line-height: 40px;
197 }
198
199 @keyframes eeb-save-toast {
200 0% { opacity: 0; transform: translate(-50%, -50%) scale(0.7); }
201 18% { opacity: 1; transform: translate(-50%, -50%) scale(1.08); }
202 30% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
203 75% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
204 100% { opacity: 0; transform: translate(-50%, -50%) scale(0.95); }
205 }
206
207 /* WP-injected admin notices that slip past .wp-header-end (rare but possible
208 for warnings/errors from other plugins) — render them as flat cards below
209 the header instead of WP's default thin strip. */
210 .eeb-wrap > .notice {
211 display: flex !important;
212 align-items: center !important;
213 gap: 12px !important;
214 background: var(--eeb-card) !important;
215 border: 1px solid var(--eeb-border) !important;
216 border-left-width: 4px !important;
217 border-radius: var(--eeb-radius) !important;
218 box-shadow: var(--eeb-shadow) !important;
219 padding: 14px 18px !important;
220 margin: 0 0 20px !important;
221 }
222
223 /* Layout — single full-width column (sidebar widgets moved to header) */
224
225 .eeb-layout {
226 display: block;
227 }
228
229 .eeb-main {
230 min-width: 0;
231 }
232
233 /* Settings shell — sidebar nav + content area */
234
235 .eeb-settings-shell {
236 display: flex;
237 background: var(--eeb-card);
238 border: 1px solid var(--eeb-border);
239 border-radius: var(--eeb-radius);
240 box-shadow: var(--eeb-shadow);
241 margin-bottom: 24px;
242 }
243
244 .eeb-settings-nav {
245 display: flex;
246 flex-direction: column;
247 gap: 2px;
248 flex-shrink: 0;
249 width: 220px;
250 padding: 16px 12px;
251 border-right: 1px solid var(--eeb-border);
252 border-radius: var(--eeb-radius) 0 0 var(--eeb-radius);
253 background: var(--eeb-card);
254 }
255
256 .eeb-settings-content {
257 flex: 1;
258 min-width: 0;
259 }
260
261 /* Tab nav items (kept .eeb-tab class for JS compatibility) */
262
263 .eeb-tab {
264 display: flex;
265 align-items: center;
266 gap: 10px;
267 padding: 11px 14px;
268 color: var(--eeb-text-secondary);
269 font-size: 13px;
270 font-weight: 500;
271 text-decoration: none;
272 cursor: pointer;
273 border-radius: var(--eeb-radius-sm);
274 white-space: nowrap;
275 transition: all var(--eeb-transition);
276 }
277
278 .eeb-tab:hover {
279 color: var(--eeb-text);
280 background: var(--eeb-primary-light);
281 }
282
283 .eeb-tab:focus {
284 outline: none;
285 box-shadow: none;
286 }
287
288 .eeb-tab.eeb-tab-active,
289 .eeb-tab.eeb-tab-active:hover {
290 color: #fff;
291 background: var(--eeb-text);
292 }
293
294 .eeb-nav-label {
295 flex: 1;
296 }
297
298 @media (max-width: 782px) {
299 .eeb-settings-shell {
300 flex-direction: column;
301 }
302
303 .eeb-settings-nav {
304 flex-direction: row;
305 width: auto;
306 padding: 8px;
307 border-right: none;
308 border-bottom: 1px solid var(--eeb-border);
309 overflow-x: auto;
310 }
311 }
312
313 /* Tab panels */
314
315 .eeb-panel {
316 padding: 28px;
317 }
318
319 /* Settings list + per-setting layout. All single rows (.eeb-setting--bool,
320 .eeb-setting--text, including text rows nested inside .eeb-setting--multi)
321 share the same row chrome and flex-row layout. */
322
323 .eeb-settings-list {
324 display: flex;
325 flex-direction: column;
326 }
327
328 .eeb-setting {
329 padding: 18px 0;
330 border-bottom: 1px solid var(--eeb-border-light);
331 }
332
333 .eeb-setting:first-child {
334 padding-top: 0;
335 }
336
337 .eeb-setting:last-child {
338 padding-bottom: 0;
339 border-bottom: none;
340 }
341
342 /* Single-bool / single-text rows: title left, control right */
343 .eeb-setting--bool,
344 .eeb-setting--text {
345 display: flex;
346 align-items: center;
347 justify-content: space-between;
348 gap: 24px;
349 }
350
351 /* Whole bool row is clickable (JS forwards the click to the toggle). */
352 .eeb-setting--bool {
353 cursor: pointer;
354 }
355
356 .eeb-setting--bool .eeb-setting-header,
357 .eeb-setting--text .eeb-setting-header {
358 flex: 1;
359 min-width: 0;
360 }
361
362 .eeb-setting--bool .eeb-setting-body,
363 .eeb-setting--text .eeb-setting-body {
364 flex-shrink: 0;
365 margin-top: 0;
366 }
367
368 .eeb-setting--text .eeb-setting-body {
369 width: 280px;
370 max-width: 50%;
371 }
372
373 .eeb-setting-header h4 {
374 display: flex;
375 align-items: center;
376 gap: 6px;
377 font-size: 14px;
378 font-weight: 600;
379 color: var(--eeb-text);
380 margin: 0;
381 }
382
383 .eeb-setting-header h4 label {
384 font: inherit;
385 color: inherit;
386 cursor: pointer;
387 }
388
389 .eeb-setting-sublabel {
390 font-size: 12px;
391 color: var(--eeb-text-secondary);
392 line-height: 1.5;
393 margin: 4px 0 0;
394 }
395
396 /* Common baseline for all .eeb-option label wrappers */
397 .eeb-option {
398 display: inline-flex;
399 align-items: center;
400 padding: 0;
401 margin: 0;
402 cursor: pointer;
403 }
404
405 /* Multi-input: title on top, options stacked below */
406
407 .eeb-setting--multi .eeb-setting-body {
408 display: flex;
409 flex-direction: column;
410 gap: 4px;
411 margin-top: 12px;
412 }
413
414 /* Nested text rows already supply their own padding + dividers,
415 so the parent's gap (intended for toggle rows) becomes redundant. */
416 .eeb-setting--multi .eeb-setting-body:has(> .eeb-setting--text) {
417 gap: 0;
418 }
419
420 /* Multi-input rows: text label + optional (i) tooltip + toggle/radio */
421
422 .eeb-setting--multi .eeb-option-row {
423 display: flex;
424 align-items: center;
425 gap: 8px;
426 padding: 10px 14px;
427 margin: 0;
428 border-radius: var(--eeb-radius-sm);
429 cursor: pointer;
430 transition: background var(--eeb-transition);
431 }
432
433 .eeb-setting--multi .eeb-option-row:hover {
434 background: var(--eeb-primary-light);
435 }
436
437 .eeb-setting--multi .eeb-option-label {
438 font-size: 13px;
439 color: var(--eeb-text);
440 line-height: 1.5;
441 cursor: pointer;
442 margin: 0;
443 }
444
445 .eeb-setting--multi .eeb-option-row .eeb-tooltip {
446 flex-shrink: 0;
447 }
448
449 .eeb-setting--multi .eeb-option-row .eeb-option {
450 flex-shrink: 0;
451 margin-left: auto;
452 }
453
454 /* Radio cards — horizontal grid of icon + title + description for mutually
455 exclusive choices. Selected card gets a primary-colored border + tinted
456 background; native radio is hidden in favor of the whole-card visual. */
457
458 .eeb-setting--multi .eeb-setting-body:has(> .eeb-radio-card) {
459 display: grid;
460 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
461 gap: 16px;
462 }
463
464 .eeb-radio-card {
465 display: flex;
466 flex-direction: column;
467 align-items: flex-start;
468 gap: 14px;
469 padding: 20px;
470 margin: 0;
471 border: 1px solid var(--eeb-border);
472 border-radius: var(--eeb-radius);
473 background: var(--eeb-card);
474 cursor: pointer;
475 transition: border-color var(--eeb-transition), background var(--eeb-transition), box-shadow var(--eeb-transition);
476 }
477
478 .eeb-radio-card:hover {
479 border-color: var(--eeb-primary);
480 background: var(--eeb-primary-light);
481 }
482
483 .eeb-radio-card:has(input:checked) {
484 border-color: var(--eeb-primary);
485 background: var(--eeb-primary-light);
486 }
487
488 /* Hide the native radio — the card itself is the visual + click target. */
489 .eeb-radio-card-input {
490 position: absolute;
491 width: 1px;
492 height: 1px;
493 padding: 0;
494 margin: -1px;
495 overflow: hidden;
496 clip: rect(0, 0, 0, 0);
497 white-space: nowrap;
498 border: 0;
499 }
500
501 .eeb-radio-card-icon {
502 display: inline-flex;
503 align-items: center;
504 justify-content: center;
505 width: 40px;
506 height: 40px;
507 border-radius: var(--eeb-radius-sm);
508 background: var(--eeb-border-light);
509 color: var(--eeb-text-secondary);
510 transition: background var(--eeb-transition), color var(--eeb-transition);
511 }
512
513 .eeb-radio-card:has(input:checked) .eeb-radio-card-icon {
514 background: var(--eeb-primary);
515 color: #fff;
516 }
517
518 .eeb-radio-card-icon .dashicons,
519 .eeb-radio-card-svg {
520 font-size: 22px;
521 width: 22px;
522 height: 22px;
523 line-height: 22px;
524 }
525
526 /* Radio-card groups don't need the row divider — the cards themselves
527 already provide enough visual separation between the two settings. */
528 .eeb-setting:has(> .eeb-setting-body > .eeb-radio-card) {
529 border-bottom: none;
530 }
531
532 .eeb-radio-card-body {
533 min-width: 0;
534 }
535
536 .eeb-radio-card-title {
537 display: block;
538 font-size: 15px;
539 font-weight: 600;
540 color: var(--eeb-text);
541 line-height: 1.4;
542 }
543
544 .eeb-radio-card-desc {
545 display: block;
546 font-size: 12px;
547 color: var(--eeb-text-secondary);
548 line-height: 1.55;
549 margin-top: 6px;
550 }
551
552 /* Keyboard-only focus indicator on the visually hidden radio.
553 Uses a single soft ring via box-shadow so it composes cleanly with the
554 :checked card highlight (no doubled outline + ring). */
555 .eeb-radio-card:has(input:focus-visible) {
556 box-shadow: var(--eeb-focus-ring);
557 }
558
559 /* Wrapper-title hidden for multi-input groups whose children are self-titling */
560
561 .eeb-setting[data-setting="image_settings"] > .eeb-setting-header {
562 display: none;
563 }
564
565 .eeb-setting[data-setting="image_settings"] .eeb-setting-body {
566 margin-top: 0;
567 }
568
569 /* Tooltips — (i) icon next to setting titles */
570
571 .eeb-tooltip {
572 position: relative;
573 display: inline-flex;
574 cursor: help;
575 }
576
577 .eeb-tooltip .dashicons {
578 font-size: 15px;
579 width: 15px;
580 height: 15px;
581 line-height: 15px;
582 color: var(--eeb-text-muted);
583 transition: color var(--eeb-transition);
584 }
585
586 .eeb-tooltip:hover .dashicons,
587 .eeb-tooltip:focus-visible .dashicons {
588 color: var(--eeb-primary);
589 }
590
591 /* Dark-pill tooltip — used by setting (i) tooltips and header action
592 button tooltips. The action-button variant is scoped via parent. */
593 .eeb-tooltip-text {
594 display: none;
595 position: absolute;
596 left: 50%;
597 top: calc(100% + 8px);
598 transform: translateX(-50%);
599 width: max-content;
600 max-width: 280px;
601 background: var(--eeb-text);
602 color: #fff;
603 font-size: 12px;
604 font-weight: 400;
605 line-height: 1.5;
606 padding: 8px 12px;
607 border-radius: var(--eeb-radius-sm);
608 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
609 z-index: 100;
610 pointer-events: none;
611 white-space: normal;
612 }
613
614 .eeb-action-btn .eeb-tooltip-text {
615 max-width: none;
616 padding: 6px 10px;
617 white-space: nowrap;
618 }
619
620 .eeb-tooltip-text::after {
621 content: '';
622 position: absolute;
623 bottom: 100%;
624 left: 50%;
625 transform: translateX(-50%);
626 border: 5px solid transparent;
627 border-bottom-color: var(--eeb-text);
628 }
629
630 .eeb-tooltip:hover .eeb-tooltip-text,
631 .eeb-tooltip:focus-visible .eeb-tooltip-text,
632 .eeb-action-btn:hover .eeb-tooltip-text,
633 .eeb-action-btn:focus-visible .eeb-tooltip-text {
634 display: block;
635 }
636
637 /* Toggle switch — replaces native checkbox visual via SVG background-image
638 (background-position animates; pseudo-elements on input are unreliable) */
639
640 .eeb-option input[type="checkbox"] {
641 -webkit-appearance: none;
642 -moz-appearance: none;
643 appearance: none;
644 width: 38px;
645 height: 22px;
646 margin: 0;
647 border: none;
648 border-radius: 11px;
649 background-color: #d0d2d6;
650 background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'><circle cx='9' cy='9' r='9' fill='white'/></svg>");
651 background-repeat: no-repeat;
652 background-position: 2px center;
653 background-size: 18px 18px;
654 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) inset;
655 filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.15));
656 cursor: pointer;
657 flex-shrink: 0;
658 color: transparent;
659 font-size: 0;
660 transition: background-color 0.18s ease, background-position 0.18s ease;
661 }
662
663 .eeb-option input[type="checkbox"]:checked {
664 background-color: var(--eeb-primary);
665 background-position: 18px center;
666 }
667
668 .eeb-option input[type="checkbox"]:focus-visible {
669 outline: 2px solid var(--eeb-primary);
670 outline-offset: 2px;
671 }
672
673 /* Suppress native checkmark glyphs from WP core forms.css and platform browsers */
674 .eeb-option input[type="checkbox"]::before,
675 .eeb-option input[type="checkbox"]:checked::before,
676 .eeb-option input[type="checkbox"]::after,
677 .eeb-option input[type="checkbox"]:checked::after {
678 content: none !important;
679 display: none !important;
680 }
681
682 /* Radios stay native — accent-colored dot, mutually exclusive choice */
683
684 .eeb-option input[type="radio"] {
685 width: 16px;
686 height: 16px;
687 margin: 0;
688 accent-color: var(--eeb-primary);
689 flex-shrink: 0;
690 }
691
692 /* Text inputs — single shared rule. Sizing comes from .eeb-setting--text
693 .eeb-setting-body; the input fills it. */
694
695 .eeb-input {
696 width: 100% !important;
697 max-width: 100% !important;
698 padding: 8px 12px !important;
699 border: 1px solid var(--eeb-border) !important;
700 border-radius: var(--eeb-radius-sm) !important;
701 font-size: 13px !important;
702 background: var(--eeb-card) !important;
703 box-sizing: border-box;
704 transition: border-color var(--eeb-transition), box-shadow var(--eeb-transition);
705 }
706
707 .eeb-input:focus {
708 outline: none !important;
709 border-color: var(--eeb-primary) !important;
710 box-shadow: var(--eeb-focus-ring) !important;
711 }
712
713 /* Panel footer + Save Settings button */
714
715 .eeb-panel-footer {
716 margin-top: 28px;
717 padding-top: 20px;
718 border-top: 1px solid var(--eeb-border-light);
719 }
720
721 .eeb-save-btn.button.button-primary {
722 background: var(--eeb-primary) !important;
723 border-color: var(--eeb-primary) !important;
724 border-radius: var(--eeb-radius-sm) !important;
725 padding: 8px 24px !important;
726 height: auto !important;
727 font-size: 13px !important;
728 font-weight: 600 !important;
729 letter-spacing: 0.2px;
730 box-shadow: 0 1px 2px rgba(56, 88, 233, 0.3) !important;
731 transition: all var(--eeb-transition);
732 }
733
734 .eeb-save-btn.button.button-primary:hover {
735 background: var(--eeb-primary-hover) !important;
736 border-color: var(--eeb-primary-hover) !important;
737 box-shadow: 0 2px 6px rgba(56, 88, 233, 0.4) !important;
738 transform: translateY(-1px);
739 }
740
741 .eeb-save-btn.button.button-primary:focus {
742 box-shadow: var(--eeb-focus-ring) !important;
743 }
744
745 /* Help tab content (rendered from legacy help-tab partials) */
746
747 .eeb-help-content {
748 font-size: 13px;
749 line-height: 1.6;
750 color: var(--eeb-text);
751 }
752
753 .eeb-help-content h3 {
754 font-size: 16px;
755 font-weight: 600;
756 margin: 0 0 12px;
757 }
758
759 .eeb-help-content p {
760 margin: 0 0 12px;
761 }
762
763 .eeb-help-content ul {
764 list-style: disc;
765 margin: 0 0 12px 20px;
766 }
767
768 .eeb-help-content li {
769 margin: 0 0 4px;
770 }
771
772 .eeb-help-content code {
773 font-size: 12px;
774 padding: 2px 6px;
775 border-radius: 4px;
776 background: var(--eeb-border-light);
777 color: var(--eeb-text);
778 }
779
780 .eeb-help-content a {
781 color: var(--eeb-primary);
782 text-decoration: none;
783 }
784
785 .eeb-help-content a:hover {
786 text-decoration: underline;
787 }
788
789 .eeb-help-divider {
790 border: none;
791 border-top: 1px solid var(--eeb-border-light);
792 margin: 28px 0;
793 }
794
795 /* Manual Email Encoder block (Tools tab) */
796
797 .eeb-encoder-tool {
798 margin: 0;
799 padding: 0;
800 border: none;
801 }
802
803 .eeb-encoder-tool h3 {
804 display: flex;
805 align-items: center;
806 gap: 6px;
807 font-size: 15px;
808 font-weight: 600;
809 color: var(--eeb-text);
810 margin: 0 0 6px;
811 }
812
813 .eeb-encoder-tool > .eeb-setting-sublabel {
814 margin-bottom: 20px;
815 font-size: 13px;
816 color: var(--eeb-text-secondary);
817 }
818
819 .eeb-encoder-tool .eeb-form {
820 margin-top: 18px;
821 }
822
823 .eeb-encoder-tool .eeb-form table {
824 width: 100%;
825 border-collapse: collapse;
826 }
827
828 .eeb-encoder-tool .eeb-form th {
829 width: 140px;
830 padding: 14px 16px 14px 0;
831 font-size: 13px;
832 font-weight: 600;
833 color: var(--eeb-text-secondary);
834 text-align: left;
835 white-space: nowrap;
836 vertical-align: middle;
837 }
838
839 .eeb-encoder-tool .eeb-form td {
840 padding: 8px 0;
841 }
842
843 /* Hide preview row + output area until JS populates them (avoids flash on load) */
844 .eeb-encoder-tool .eeb-form tr:has(.eeb-example:empty),
845 .eeb-encoder-tool .eeb-form .eeb-output {
846 display: none;
847 }
848
849 /* Encoder form controls — share 38px height and matching radius */
850
851 .eeb-encoder-tool .eeb-form input[type="text"],
852 .eeb-encoder-tool .eeb-form select,
853 .eeb-encoder-tool .eeb-form input[type="button"] {
854 box-sizing: border-box;
855 height: 38px;
856 font-size: 13px;
857 border-radius: var(--eeb-radius-sm);
858 vertical-align: middle;
859 }
860
861 .eeb-encoder-tool .eeb-form input[type="text"] {
862 width: 100%;
863 max-width: 380px;
864 padding: 0 12px;
865 border: 1px solid var(--eeb-border);
866 background: var(--eeb-card);
867 transition: border-color var(--eeb-transition), box-shadow var(--eeb-transition);
868 }
869
870 .eeb-encoder-tool .eeb-form input[type="text"]:focus,
871 .eeb-encoder-tool .eeb-form textarea:focus {
872 outline: none;
873 border-color: var(--eeb-primary);
874 box-shadow: var(--eeb-focus-ring);
875 }
876
877 .eeb-encoder-tool .eeb-form select {
878 padding: 0 12px;
879 border: 1px solid var(--eeb-border);
880 background: var(--eeb-card);
881 cursor: pointer;
882 }
883
884 .eeb-encoder-tool .eeb-form input[type="button"] {
885 padding: 0 16px;
886 margin-left: 8px;
887 border: 1px solid var(--eeb-primary);
888 background: var(--eeb-primary);
889 color: #fff;
890 font-weight: 500;
891 cursor: pointer;
892 transition: background var(--eeb-transition);
893 }
894
895 .eeb-encoder-tool .eeb-form input[type="button"]:hover {
896 background: var(--eeb-primary-hover);
897 }
898
899 .eeb-encoder-tool .eeb-form textarea {
900 width: 100%;
901 max-width: 100%;
902 padding: 10px 12px;
903 border: 1px solid var(--eeb-border);
904 border-radius: var(--eeb-radius-sm);
905 font-size: 13px;
906 font-family: monospace;
907 background: var(--eeb-card);
908 resize: vertical;
909 box-sizing: border-box;
910 }
911
912 .eeb-encoder-tool .eeb-form .eeb-example a {
913 color: var(--eeb-primary);
914 }
915
916 .eeb-encoder-tool .eeb-form .powered-by {
917 font-size: 12px;
918 color: var(--eeb-text-muted);
919 margin: 16px 0 0;
920 }
921
922 /* Embed-anywhere callout below the encoder form */
923
924 .eeb-embed-callout {
925 display: flex;
926 align-items: flex-start;
927 gap: 12px;
928 margin-top: 24px;
929 padding: 14px 18px;
930 background: var(--eeb-border-light);
931 border: 1px solid var(--eeb-border);
932 border-radius: var(--eeb-radius-sm);
933 }
934
935 .eeb-embed-callout > .dashicons {
936 flex-shrink: 0;
937 width: 20px;
938 height: 20px;
939 margin-top: 1px;
940 font-size: 20px;
941 color: var(--eeb-text-secondary);
942 }
943
944 .eeb-embed-callout-body {
945 flex: 1;
946 min-width: 0;
947 }
948
949 .eeb-embed-callout-body strong {
950 display: block;
951 font-size: 13px;
952 font-weight: 600;
953 color: var(--eeb-text);
954 margin-bottom: 6px;
955 }
956
957 .eeb-embed-snippets {
958 display: flex;
959 flex-wrap: wrap;
960 gap: 16px;
961 font-size: 12px;
962 color: var(--eeb-text-secondary);
963 }
964
965 .eeb-embed-snippets code {
966 margin-left: 4px;
967 padding: 2px 6px;
968 font-size: 12px;
969 border: 1px solid var(--eeb-border);
970 border-radius: 4px;
971 background: var(--eeb-card);
972 color: var(--eeb-text);
973 }
974