PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.83
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.83
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / admin / layouts / shared / admin-v3-styles.css

admin-v3-styles.css in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.83, at includes/admin/layouts/shared/admin-v3-styles.css

1,753 lines 38.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Shared Admin V3 Styles - Premium style inspired "Pro" UI
3 *
4 * Modern, premium design with glassmorphism and iOS aesthetics.
5 * Shared across Settings, Wishlist, and Analytics pages.
6 *
7 * @package King_Addons
8 */
9
10 @font-face {
11 font-family: 'Inter';
12 font-style: normal;
13 font-weight: 100 900;
14 font-display: swap;
15 src: url('../../fonts/Inter.woff2') format('woff2');
16 }
17
18 /* ===== RESET & BASE ===== */
19 body.ka-admin-v3 #wpcontent,
20 body.ka-admin-v3 #wpbody,
21 body.ka-admin-v3 #wpbody-content {
22 background: #f5f5f7 !important;
23 padding: 0 !important;
24 }
25
26 body.ka-admin-v3.ka-v3-dark #wpcontent,
27 body.ka-admin-v3.ka-v3-dark #wpbody,
28 body.ka-admin-v3.ka-v3-dark #wpbody-content {
29 background: #000000 !important;
30 }
31
32 html.ka-v3-dark,
33 html.ka-v3-dark body {
34 background: #000000 !important;
35 }
36
37 .ka-admin-wrap {
38 font-family: 'Inter', -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
39 max-width: 1200px;
40 margin: 0 auto;
41 padding: 60px 40px;
42 color: #1d1d1f;
43 transition: color 0.3s ease;
44 }
45
46 .ka-admin-wrap * {
47 box-sizing: border-box;
48 }
49
50 /* ===== TYPOGRAPHY ===== */
51 .ka-admin-title {
52 font-size: 48px;
53 font-weight: 700;
54 letter-spacing: -0.015em;
55 margin: 0 0 8px;
56 line-height: 1.1;
57 background: linear-gradient(135deg, #1d1d1f 0%, #515154 100%);
58 -webkit-background-clip: text;
59 -webkit-text-fill-color: transparent;
60 background-clip: text;
61 }
62
63 .ka-admin-subtitle {
64 font-size: 19px;
65 font-weight: 400;
66 color: #86868b;
67 margin: 0;
68 line-height: 1.5;
69 }
70
71 /* ===== HEADER ===== */
72 .ka-admin-header {
73 display: flex;
74 flex-wrap: wrap;
75 justify-content: space-between;
76 align-items: flex-start;
77 margin-bottom: 48px;
78 gap: 24px;
79 }
80
81 .ka-admin-header-left {
82 /* Keep the title readable instead of letting the action group squeeze it;
83 below this width the header wraps onto two rows. */
84 flex: 1 1 420px;
85 min-width: 0;
86 }
87
88 .ka-admin-header-left {
89 display: flex;
90 align-items: flex-start;
91 gap: 20px;
92 }
93
94 .ka-admin-header-icon {
95 width: 64px;
96 height: 64px;
97 background: linear-gradient(135deg, #0071e3 0%, #0077ed 100%);
98 border-radius: 16px;
99 display: flex;
100 align-items: center;
101 justify-content: center;
102 flex-shrink: 0;
103 }
104
105 .ka-admin-header-icon .dashicons {
106 font-size: 32px;
107 width: 32px;
108 height: 32px;
109 color: #fff;
110 }
111
112 .ka-admin-header-icon.pink {
113 background: linear-gradient(135deg, #ec4899 0%, #db2777 100%);
114 }
115
116 .ka-admin-header-icon.purple {
117 background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
118 }
119
120 .ka-admin-header-icon.red {
121 background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
122 }
123
124 .ka-admin-header-icon.green {
125 background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
126 }
127
128 .ka-admin-header-icon.orange {
129 background: linear-gradient(135deg, #f97316 0%, #ea580c 100%);
130 }
131
132 .ka-admin-header-actions {
133 display: flex;
134 gap: 12px;
135 align-items: center;
136 }
137
138 /* ===== FOOTER ===== */
139 #wpfooter {
140 visibility: visible;
141 }
142
143 /* ===== BUTTONS ===== */
144 .ka-btn {
145 display: inline-flex;
146 align-items: center;
147 gap: 8px;
148 padding: 12px 24px;
149 border-radius: 980px;
150 font-size: 15px;
151 font-weight: 400;
152 text-decoration: none;
153 transition: all 0.3s cubic-bezier(0.25, 1, 0.5, 1);
154 cursor: pointer;
155 border: none;
156 white-space: nowrap;
157 }
158
159 .ka-btn-sm {
160 padding: 8px 16px;
161 font-size: 13px;
162 }
163
164 .ka-btn-secondary {
165 background: rgba(0, 0, 0, 0.06);
166 color: #1d1d1f;
167 }
168
169 .ka-btn-secondary:hover {
170 background: rgba(0, 0, 0, 0.12);
171 color: #1d1d1f;
172 }
173
174 .ka-btn-primary {
175 background: #0071e3;
176 color: #fff;
177 }
178
179 .ka-btn-primary:hover {
180 background: #0077ed;
181 color: #fff;
182 transform: scale(1.02);
183 }
184
185 .ka-btn-pink {
186 background: linear-gradient(135deg, #ec4899 0%, #db2777 100%);
187 color: #fff;
188 }
189
190 .ka-btn-pink:hover {
191 transform: scale(1.02);
192 box-shadow: 0 4px 20px rgba(236, 72, 153, 0.4);
193 color: #fff;
194 }
195
196 .ka-btn .dashicons {
197 font-size: 18px;
198 width: 18px;
199 height: 18px;
200 }
201
202 /* ===== THEME TOGGLE ===== */
203 .ka-theme-toggle {
204 display: inline-flex;
205 align-items: center;
206 gap: 10px;
207 padding: 8px 16px;
208 background: rgba(0, 0, 0, 0.06);
209 border-radius: 980px;
210 cursor: pointer;
211 transition: all 0.3s ease;
212 }
213
214 .ka-theme-toggle:hover {
215 background: rgba(0, 0, 0, 0.1);
216 }
217
218 .ka-theme-toggle .dashicons {
219 font-size: 20px;
220 width: 20px;
221 height: 20px;
222 color: #86868b;
223 transition: color 0.3s ease;
224 }
225
226 /* ===== THEME SEGMENTED (Dashboard-style) ===== */
227 .ka-v3-segmented {
228 position: relative;
229 display: grid;
230 grid-template-columns: 1fr 1fr 1fr;
231 align-items: center;
232 padding: 2px;
233 border-radius: 980px;
234 background: rgba(0, 0, 0, 0.06);
235 border: 1px solid rgba(0, 0, 0, 0.06);
236 min-width: 240px;
237 height: 40px;
238 overflow: hidden;
239 }
240
241 .ka-v3-segmented-indicator {
242 position: absolute;
243 top: 2px;
244 bottom: 2px;
245 left: 2px;
246 width: calc(33.333% - 2px);
247 border-radius: 980px;
248 background: rgba(255, 255, 255, 0.92);
249 box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
250 transform: translateX(0);
251 transition: transform 0.35s cubic-bezier(0.25, 1, 0.5, 1);
252 z-index: 0;
253 }
254
255 .ka-v3-segmented[data-active="dark"] .ka-v3-segmented-indicator {
256 transform: translateX(100%);
257 }
258
259 .ka-v3-segmented[data-active="auto"] .ka-v3-segmented-indicator {
260 transform: translateX(200%);
261 }
262
263 .ka-v3-segmented-btn {
264 position: relative;
265 z-index: 1;
266 height: 36px;
267 border: none;
268 background: transparent;
269 border-radius: 980px;
270 padding: 0 12px;
271 display: inline-flex;
272 align-items: center;
273 justify-content: center;
274 gap: 8px;
275 font-size: 13px;
276 font-weight: 500;
277 color: #1d1d1f;
278 cursor: pointer;
279 transition: color 0.25s ease, transform 0.25s ease;
280 user-select: none;
281 white-space: nowrap;
282 }
283
284 .ka-v3-segmented-btn:active {
285 transform: scale(0.98);
286 }
287
288 .ka-v3-segmented-icon {
289 font-size: 14px;
290 line-height: 1;
291 opacity: 0.9;
292 }
293
294 .ka-v3-segmented-btn[aria-pressed="false"] {
295 color: rgba(29, 29, 31, 0.7);
296 }
297
298 body.ka-admin-v3.ka-v3-dark .ka-v3-segmented,
299 body.ka-v3-dark .ka-v3-segmented {
300 background: rgba(255, 255, 255, 0.1);
301 border-color: rgba(255, 255, 255, 0.1);
302 }
303
304 body.ka-admin-v3.ka-v3-dark .ka-v3-segmented-indicator,
305 body.ka-v3-dark .ka-v3-segmented-indicator {
306 background: rgba(255, 255, 255, 0.1);
307 box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
308 }
309
310 body.ka-admin-v3.ka-v3-dark .ka-v3-segmented-btn,
311 body.ka-v3-dark .ka-v3-segmented-btn {
312 color: #f5f5f7;
313 }
314
315 body.ka-admin-v3.ka-v3-dark .ka-v3-segmented-btn[aria-pressed="false"],
316 body.ka-v3-dark .ka-v3-segmented-btn[aria-pressed="false"] {
317 color: rgba(245, 245, 247, 0.72);
318 }
319
320
321 body.toplevel_page_king-addons.ka-v3-dark {
322 background: #000000 !important;
323 }
324
325 /* ===== ADMIN NOTICES (V3) ===== */
326 body.ka-admin-v3 .notice,
327 body.ka-admin-v3 .updated,
328 body.ka-admin-v3 .error,
329 .ka-admin-wrap .notice,
330 .ka-admin-wrap .updated,
331 .ka-admin-wrap .error {
332 margin: 0 0 16px;
333 padding: 18px 20px;
334 border-radius: 16px;
335 border: 1px solid rgba(0, 0, 0, 0.06);
336 background: rgba(255, 255, 255, 0.72);
337 backdrop-filter: saturate(180%) blur(20px);
338 -webkit-backdrop-filter: saturate(180%) blur(20px);
339 box-shadow: 0 8px 30px rgba(0, 0, 0, 0.06);
340 }
341
342 body.ka-admin-v3.ka-dark-theme .notice,
343 body.ka-admin-v3.ka-dark-theme .updated,
344 body.ka-admin-v3.ka-dark-theme .error,
345 body.ka-admin-v3.ka-v3-dark .ka-admin-wrap .notice,
346 body.ka-admin-v3.ka-v3-dark .ka-admin-wrap .updated,
347 body.ka-admin-v3.ka-v3-dark .ka-admin-wrap .error {
348 border-color: rgba(255, 255, 255, 0.08);
349 background: rgba(28, 28, 30, 0.72);
350 box-shadow: 0 10px 36px rgba(0, 0, 0, 0.3);
351 color: #f5f5f7;
352 }
353
354 body.ka-admin-v3.ka-v3-dark .notice,
355 body.ka-admin-v3.ka-v3-dark .updated,
356 body.ka-admin-v3.ka-v3-dark .error {
357 border-color: rgba(255, 255, 255, 0.08);
358 background: rgba(28, 28, 30, 0.72);
359 box-shadow: 0 10px 36px rgba(0, 0, 0, 0.3);
360 color: #f5f5f7;
361 }
362
363 /* Dashboard (admin.php?page=king-addons) can render notices outside .ka-admin-wrap and without ka-admin-v3 */
364 body.toplevel_page_king-addons.ka-v3-dark .notice,
365 body.toplevel_page_king-addons.ka-v3-dark .notice.notice-success,
366 body.toplevel_page_king-addons.ka-v3-dark .notice.notice-info,
367 body.toplevel_page_king-addons.ka-v3-dark .notice.notice-warning,
368 body.toplevel_page_king-addons.ka-v3-dark .notice.notice-error,
369 body.toplevel_page_king-addons.ka-v3-dark .updated,
370 body.toplevel_page_king-addons.ka-v3-dark .error {
371 border-color: rgba(255, 255, 255, 0.08) !important;
372 background: rgba(28, 28, 30, 0.72) !important;
373 box-shadow: 0 10px 36px rgba(0, 0, 0, 0.3) !important;
374 color: #f5f5f7 !important;
375 }
376
377 /*
378 * WordPress core colours the text inside a notice explicitly:
379 *
380 * .notice p, .notice-title, div.error p, div.updated p { color: #1e1e1e; }
381 *
382 * Colouring only the .notice container above leaves that untouched, because an
383 * explicit rule always beats an inherited value - so the paragraph stayed dark
384 * on the dark background and the message was unreadable.
385 */
386 body.ka-admin-v3.ka-v3-dark .notice p,
387 body.ka-admin-v3.ka-v3-dark .notice li,
388 body.ka-admin-v3.ka-v3-dark .notice .notice-title,
389 body.ka-admin-v3.ka-v3-dark .updated p,
390 body.ka-admin-v3.ka-v3-dark .error p,
391 body.ka-admin-v3.ka-dark-theme .notice p,
392 body.ka-admin-v3.ka-dark-theme .notice li,
393 body.ka-admin-v3.ka-dark-theme .notice .notice-title,
394 body.ka-admin-v3.ka-dark-theme .updated p,
395 body.ka-admin-v3.ka-dark-theme .error p {
396 color: #f5f5f7;
397 }
398
399 body.toplevel_page_king-addons.ka-v3-dark .notice p,
400 body.toplevel_page_king-addons.ka-v3-dark .notice li,
401 body.toplevel_page_king-addons.ka-v3-dark .notice .notice-title,
402 body.toplevel_page_king-addons.ka-v3-dark .updated p,
403 body.toplevel_page_king-addons.ka-v3-dark .error p {
404 color: #f5f5f7 !important;
405 }
406
407 body.ka-admin-v3 .notice p,
408 body.ka-admin-v3 .updated p,
409 body.ka-admin-v3 .error p,
410 .ka-admin-wrap .notice p,
411 .ka-admin-wrap .updated p,
412 .ka-admin-wrap .error p {
413 margin: 0;
414 font-size: 15px;
415 line-height: 1.5;
416 }
417
418 body.ka-admin-v3 .notice a,
419 body.ka-admin-v3 .updated a,
420 body.ka-admin-v3 .error a,
421 .ka-admin-wrap .notice a,
422 .ka-admin-wrap .updated a,
423 .ka-admin-wrap .error a {
424 color: inherit;
425 text-decoration: underline;
426 text-underline-offset: 2px;
427 }
428
429 body.ka-admin-v3.ka-v3-dark .notice .notice-dismiss:before,
430 body.ka-admin-v3.ka-dark-theme .notice .notice-dismiss:before {
431 color: rgba(245, 245, 247, 0.72);
432 }
433
434 body.ka-admin-v3.ka-v3-dark .notice .notice-dismiss:hover:before,
435 body.ka-admin-v3.ka-v3-dark .notice .notice-dismiss:focus:before,
436 body.ka-admin-v3.ka-dark-theme .notice .notice-dismiss:hover:before,
437 body.ka-admin-v3.ka-dark-theme .notice .notice-dismiss:focus:before {
438 color: rgba(245, 245, 247, 0.92);
439 }
440
441 /* Subtle left accent like callouts */
442 body.ka-admin-v3 .notice,
443 body.ka-admin-v3 .updated,
444 body.ka-admin-v3 .error,
445 .ka-admin-wrap .notice,
446 .ka-admin-wrap .updated,
447 .ka-admin-wrap .error {
448 border-left-width: 4px;
449 }
450
451 body.ka-admin-v3 .notice.notice-error,
452 body.ka-admin-v3 .error,
453 .ka-admin-wrap .notice.notice-error,
454 .ka-admin-wrap .error {
455 border-left-color: rgba(255, 59, 48, 0.9);
456 }
457
458 body.ka-admin-v3 .notice.notice-info,
459 .ka-admin-wrap .notice.notice-info {
460 border-left-color: rgba(0, 113, 227, 0.9);
461 }
462
463 body.ka-admin-v3 .notice.notice-warning,
464 .ka-admin-wrap .notice.notice-warning {
465 border-left-color: rgba(245, 158, 11, 0.9);
466 }
467
468 body.ka-admin-v3 .updated,
469 body.ka-admin-v3 .notice.notice-success,
470 .ka-admin-wrap .updated,
471 .ka-admin-wrap .notice.notice-success {
472 border-left-color: rgba(52, 199, 89, 0.9);
473 }
474
475 /* ===== STATUS BADGE ===== */
476 .ka-status {
477 display: inline-flex;
478 align-items: center;
479 gap: 8px;
480 padding: 6px 14px;
481 border-radius: 980px;
482 font-size: 13px;
483 font-weight: 500;
484 }
485
486 .ka-status-enabled {
487 background: rgba(52, 199, 89, 0.15);
488 color: #34c759;
489 }
490
491 .ka-status-disabled {
492 background: rgba(255, 59, 48, 0.15);
493 color: #ff3b30;
494 }
495
496 .ka-status-dot {
497 width: 8px;
498 height: 8px;
499 border-radius: 50%;
500 background: currentColor;
501 }
502
503 /* ===== TABS ===== */
504 .ka-tabs {
505 display: flex;
506 justify-content: center;
507 background: rgba(255, 255, 255, 0.72);
508 backdrop-filter: saturate(180%) blur(20px);
509 -webkit-backdrop-filter: saturate(180%) blur(20px);
510 padding: 6px;
511 border-radius: 980px;
512 width: fit-content;
513 margin: 0 auto 40px;
514 box-shadow: 0 4px 30px rgba(0, 0, 0, 0.08);
515 border: 1px solid rgba(0, 0, 0, 0.04);
516 }
517
518 .ka-tab {
519 padding: 10px 20px;
520 font-size: 14px;
521 font-weight: 500;
522 color: #86868b;
523 background: transparent;
524 border: none;
525 border-radius: 980px;
526 cursor: pointer;
527 transition: all 0.3s ease;
528 }
529
530 .ka-tab:hover {
531 color: #1d1d1f;
532 }
533
534 .ka-tab.active {
535 background: #fff;
536 color: #1d1d1f;
537 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
538 }
539
540 .ka-tab-content {
541 display: none;
542 }
543
544 .ka-tab-content.active {
545 display: block;
546 }
547
548 /* ===== CARDS ===== */
549 .ka-card {
550 background: #fff;
551 border-radius: 20px;
552 box-shadow: 0 2px 20px rgba(0, 0, 0, 0.04);
553 margin-bottom: 24px;
554 overflow: hidden;
555 transition: box-shadow 0.3s ease;
556 }
557
558 .ka-card:hover {
559 box-shadow: 0 4px 30px rgba(0, 0, 0, 0.08);
560 }
561
562 .ka-card-header {
563 padding: 20px 28px;
564 border-bottom: 1px solid rgba(0, 0, 0, 0.06);
565 display: flex;
566 align-items: center;
567 gap: 12px;
568 }
569
570 .ka-card-header h2,
571 .ka-card-header h3 {
572 margin: 0;
573 font-size: 17px;
574 font-weight: 600;
575 color: #1d1d1f;
576 }
577
578 .ka-card-header .dashicons {
579 color: #0071e3;
580 font-size: 20px;
581 width: 20px;
582 height: 20px;
583 }
584
585 .ka-card-header .dashicons.pink {
586 color: #ec4899;
587 }
588
589 .ka-card-body {
590 padding: 24px 28px;
591 }
592
593 /* ===== FORM ROWS ===== */
594 .ka-row {
595 display: flex;
596 align-items: flex-start;
597 padding: 18px 0;
598 border-bottom: 1px solid rgba(0, 0, 0, 0.04);
599 }
600
601 .ka-row:last-child {
602 border-bottom: none;
603 }
604
605 .ka-row-label {
606 width: 200px;
607 flex-shrink: 0;
608 font-size: 15px;
609 font-weight: 500;
610 color: #1d1d1f;
611 padding-top: 10px;
612 }
613
614 .ka-row-field {
615 flex: 1;
616 }
617
618 .ka-row-field input[type="text"],
619 .ka-row-field input[type="number"],
620 .ka-row-field input[type="password"],
621 .ka-row-field input[type="email"],
622 .ka-row-field input[type="url"],
623 .ka-row-field input[type="date"],
624 .ka-row-field textarea,
625 .ka-row-field select {
626 width: 100%;
627 max-width: 400px;
628 padding: 12px 16px;
629 border: 1px solid rgba(0, 0, 0, 0.1);
630 border-radius: 12px;
631 font-size: 15px;
632 font-family: inherit;
633 background-color: #fff;
634 transition: border-color 0.2s, box-shadow 0.2s;
635 }
636
637 /* Select dropdown arrow (single selects only) */
638 .ka-row-field select:not([multiple]) {
639 padding-right: 48px;
640 cursor: pointer;
641 -webkit-appearance: none;
642 -moz-appearance: none;
643 appearance: none;
644 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%231d1d1f' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
645 background-repeat: no-repeat;
646 background-position: right 16px center;
647 background-size: 18px 18px;
648 }
649
650 .ka-row-field input:focus,
651 .ka-row-field textarea:focus,
652 .ka-row-field select:focus {
653 outline: none;
654 border-color: #0071e3;
655 box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.1);
656 }
657
658 .ka-row-desc {
659 font-size: 13px;
660 color: #86868b;
661 margin-top: 8px;
662 line-height: 1.5;
663 }
664
665 .ka-row-desc a {
666 color: #0071e3;
667 text-decoration: none;
668 }
669
670 .ka-row-desc a:hover {
671 text-decoration: underline;
672 }
673
674 /* ===== TOGGLE SWITCH (iOS Style) ===== */
675 .ka-toggle {
676 position: relative;
677 display: inline-flex;
678 align-items: center;
679 gap: 12px;
680 cursor: pointer;
681 }
682
683 .ka-toggle input {
684 position: absolute;
685 opacity: 0;
686 width: 0;
687 height: 0;
688 }
689
690 .ka-toggle-slider {
691 width: 51px;
692 height: 31px;
693 background: #e9e9eb;
694 border-radius: 16px;
695 position: relative;
696 transition: background 0.3s ease;
697 }
698
699 .ka-toggle-slider::after {
700 content: '';
701 position: absolute;
702 top: 2px;
703 left: 2px;
704 width: 27px;
705 height: 27px;
706 background: #fff;
707 border-radius: 50%;
708 transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
709 box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.1);
710 }
711
712 .ka-toggle input:checked + .ka-toggle-slider {
713 background: #34c759;
714 }
715
716 .ka-toggle input:checked + .ka-toggle-slider::after {
717 transform: translateX(20px);
718 }
719
720 .ka-toggle-label {
721 font-size: 15px;
722 color: #86868b;
723 }
724
725 /* ===== RADIO GROUP ===== */
726 .ka-radio-group {
727 display: flex;
728 flex-direction: column;
729 gap: 10px;
730 }
731
732 .ka-radio-item {
733 display: flex;
734 align-items: center;
735 gap: 10px;
736 font-size: 15px;
737 color: #1d1d1f;
738 cursor: pointer;
739 }
740
741 .ka-admin-wrap .ka-radio-item:has(> span) {
742 align-items: flex-start;
743 }
744
745 body.ka-admin-v3 .ka-admin-wrap input[type="radio"],
746 .ka-radio-item input[type="radio"] {
747 appearance: none;
748 -webkit-appearance: none;
749 width: 18px;
750 height: 18px;
751 min-width: 18px;
752 min-height: 18px;
753 margin: 0;
754 padding: 0 !important;
755 flex: 0 0 auto;
756 border: 2px solid #c7c7cc;
757 border-radius: 50%;
758 background-color: #fff;
759 background-image: none;
760 background-clip: padding-box;
761 box-shadow: none;
762 color: transparent;
763 cursor: pointer;
764 outline: none;
765 line-height: 0;
766 vertical-align: middle;
767 transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
768 }
769
770 .ka-admin-wrap .ka-radio-item:has(> span) input[type="radio"] {
771 margin-top: 3px;
772 }
773
774 body.ka-admin-v3 .ka-admin-wrap input[type="radio"]::before,
775 body.ka-admin-v3 .ka-admin-wrap input[type="radio"]:checked::before,
776 .ka-radio-item input[type="radio"]::before,
777 .ka-radio-item input[type="radio"]:checked::before {
778 content: none !important;
779 display: none !important;
780 }
781
782 body.ka-admin-v3 .ka-admin-wrap input[type="radio"]:hover:not(:checked):not(:disabled),
783 .ka-radio-item input[type="radio"]:hover:not(:checked):not(:disabled) {
784 border-color: #8e8e93;
785 }
786
787 body.ka-admin-v3 .ka-admin-wrap input[type="radio"]:checked,
788 .ka-radio-item input[type="radio"]:checked {
789 border-color: #0071e3;
790 background-color: #fff;
791 background-image: radial-gradient(circle, #0071e3 0 4px, transparent 4.5px);
792 }
793
794 body.ka-admin-v3 .ka-admin-wrap input[type="radio"]:focus,
795 .ka-radio-item input[type="radio"]:focus {
796 border-color: #0071e3;
797 box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.22);
798 outline: none;
799 }
800
801 body.ka-admin-v3 .ka-admin-wrap input[type="radio"]:focus:not(:focus-visible),
802 .ka-radio-item input[type="radio"]:focus:not(:focus-visible) {
803 box-shadow: none;
804 }
805
806 body.ka-admin-v3 .ka-admin-wrap input[type="radio"]:disabled,
807 .ka-radio-item input[type="radio"]:disabled {
808 opacity: 0.45;
809 cursor: not-allowed;
810 }
811
812 body.ka-admin-v3.ka-v3-dark .ka-admin-wrap input[type="radio"],
813 body.ka-v3-dark .ka-radio-item input[type="radio"] {
814 background-color: #1c1c1e;
815 border-color: #636366;
816 }
817
818 body.ka-admin-v3.ka-v3-dark .ka-admin-wrap input[type="radio"]:hover:not(:checked):not(:disabled),
819 body.ka-v3-dark .ka-radio-item input[type="radio"]:hover:not(:checked):not(:disabled) {
820 border-color: #8e8e93;
821 }
822
823 body.ka-admin-v3.ka-v3-dark .ka-admin-wrap input[type="radio"]:checked,
824 body.ka-v3-dark .ka-radio-item input[type="radio"]:checked {
825 border-color: #0a84ff;
826 background-color: #1c1c1e;
827 background-image: radial-gradient(circle, #0a84ff 0 4px, transparent 4.5px);
828 }
829
830 body.ka-admin-v3.ka-v3-dark .ka-admin-wrap input[type="radio"]:focus,
831 body.ka-v3-dark .ka-radio-item input[type="radio"]:focus {
832 border-color: #0a84ff;
833 box-shadow: 0 0 0 3px rgba(10, 132, 255, 0.28);
834 }
835
836 /* ===== COLOR PICKER ===== */
837 .ka-color-wrap {
838 display: flex;
839 align-items: center;
840 gap: 12px;
841 }
842
843 .ka-color-wrap input[type="text"] {
844 max-width: 140px !important;
845 }
846
847 /* ===== PRO BADGE ===== */
848 .ka-pro-badge {
849 display: inline-block;
850 background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
851 color: #fff;
852 font-size: 10px;
853 font-weight: 700;
854 padding: 4px 8px;
855 border-radius: 6px;
856 text-transform: uppercase;
857 letter-spacing: 0.5px;
858 margin-left: 10px;
859 }
860
861 /* ===== SUBMIT FOOTER ===== */
862 .ka-submit {
863 padding: 24px 28px;
864 background: rgba(0, 0, 0, 0.02);
865 border-top: 1px solid rgba(0, 0, 0, 0.06);
866 display: flex;
867 justify-content: flex-end;
868 gap: 12px;
869 }
870
871 /* ===== STATS GRID ===== */
872 .ka-stats-grid {
873 display: grid;
874 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
875 gap: 20px;
876 margin-bottom: 32px;
877 }
878
879 .ka-stat-card {
880 background: #fff;
881 border-radius: 20px;
882 box-shadow: 0 2px 20px rgba(0, 0, 0, 0.04);
883 padding: 24px;
884 position: relative;
885 overflow: hidden;
886 transition: transform 0.3s ease, box-shadow 0.3s ease;
887 }
888
889 .ka-stat-card:hover {
890 transform: translateY(-4px);
891 box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
892 }
893
894 .ka-stat-card::before {
895 content: '';
896 position: absolute;
897 top: 0;
898 left: 0;
899 right: 0;
900 height: 4px;
901 background: linear-gradient(90deg, #0071e3, #0077ed);
902 }
903
904 .ka-stat-card:nth-child(2)::before {
905 background: linear-gradient(90deg, #8b5cf6, #7c3aed);
906 }
907
908 .ka-stat-card:nth-child(3)::before {
909 background: linear-gradient(90deg, #34c759, #30d158);
910 }
911
912 .ka-stat-card:nth-child(4)::before {
913 background: linear-gradient(90deg, #ff9f0a, #ff9500);
914 }
915
916 .ka-stat-card:nth-child(5)::before {
917 background: linear-gradient(90deg, #ec4899, #db2777);
918 }
919
920 .ka-stat-label {
921 font-size: 13px;
922 font-weight: 500;
923 color: #86868b;
924 margin-bottom: 8px;
925 text-transform: uppercase;
926 letter-spacing: 0.05em;
927 }
928
929 .ka-stat-value {
930 font-size: 36px;
931 font-weight: 700;
932 color: #1d1d1f;
933 letter-spacing: -0.02em;
934 margin-bottom: 4px;
935 line-height: 1;
936 }
937
938 .ka-stat-value.good {
939 color: #34c759;
940 }
941
942 /* ===== FILTER BAR ===== */
943 .ka-filter-bar {
944 background: #fff;
945 border-radius: 20px;
946 box-shadow: 0 2px 20px rgba(0, 0, 0, 0.04);
947 padding: 20px 24px;
948 margin-bottom: 24px;
949 display: flex;
950 align-items: center;
951 gap: 20px;
952 flex-wrap: wrap;
953 }
954
955 .ka-filter-bar label {
956 display: flex;
957 align-items: center;
958 gap: 10px;
959 font-size: 14px;
960 font-weight: 500;
961 color: #86868b;
962 }
963
964 .ka-filter-bar input[type="date"] {
965 padding: 10px 14px;
966 border: 1px solid rgba(0, 0, 0, 0.1);
967 border-radius: 10px;
968 font-size: 14px;
969 }
970
971 .ka-filter-bar input[type="date"]:focus {
972 outline: none;
973 border-color: #0071e3;
974 box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.1);
975 }
976
977 .ka-filter-bar .button {
978 padding: 10px 20px;
979 border-radius: 10px;
980 background: rgba(0, 0, 0, 0.06);
981 border: none;
982 color: #1d1d1f;
983 font-weight: 500;
984 cursor: pointer;
985 transition: all 0.2s ease;
986 }
987
988 .ka-filter-bar .button:hover {
989 background: rgba(0, 0, 0, 0.1);
990 }
991
992 .ka-export-btn {
993 margin-left: auto;
994 }
995
996 /* ===== TABLE ===== */
997 .ka-table {
998 width: 100%;
999 border-collapse: collapse;
1000 }
1001
1002 .ka-table th {
1003 background: rgba(0, 0, 0, 0.02);
1004 padding: 16px 20px;
1005 text-align: left;
1006 font-size: 12px;
1007 font-weight: 600;
1008 color: #86868b;
1009 text-transform: uppercase;
1010 letter-spacing: 0.05em;
1011 border-bottom: 1px solid rgba(0, 0, 0, 0.06);
1012 }
1013
1014 .ka-table td {
1015 padding: 16px 20px;
1016 border-bottom: 1px solid rgba(0, 0, 0, 0.04);
1017 font-size: 15px;
1018 color: #1d1d1f;
1019 }
1020
1021 .ka-table tbody tr {
1022 transition: background 0.2s ease;
1023 }
1024
1025 .ka-table tbody tr:hover {
1026 background: rgba(0, 0, 0, 0.02);
1027 }
1028
1029 .ka-table .text-center {
1030 text-align: center;
1031 }
1032
1033 .ka-table .font-bold {
1034 font-weight: 600;
1035 }
1036
1037 /* Product cell */
1038 .ka-product-cell {
1039 display: flex;
1040 align-items: center;
1041 gap: 14px;
1042 }
1043
1044 .ka-product-cell img {
1045 width: 44px;
1046 height: 44px;
1047 border-radius: 10px;
1048 object-fit: cover;
1049 border: 1px solid rgba(0, 0, 0, 0.06);
1050 }
1051
1052 .ka-product-cell a {
1053 color: #1d1d1f;
1054 font-weight: 500;
1055 text-decoration: none;
1056 }
1057
1058 .ka-product-cell a:hover {
1059 color: #0071e3;
1060 }
1061
1062 /* ===== BADGE ===== */
1063 .ka-badge {
1064 display: inline-block;
1065 padding: 6px 12px;
1066 border-radius: 980px;
1067 font-size: 13px;
1068 font-weight: 500;
1069 }
1070
1071 .ka-badge-success {
1072 background: rgba(52, 199, 89, 0.15);
1073 color: #34c759;
1074 }
1075
1076 .ka-badge-warning {
1077 background: rgba(255, 159, 10, 0.15);
1078 color: #ff9f0a;
1079 }
1080
1081 .ka-badge-neutral {
1082 background: rgba(0, 0, 0, 0.06);
1083 color: #86868b;
1084 }
1085
1086 /* ===== STOCK STATUS ===== */
1087 .ka-stock {
1088 display: inline-flex;
1089 align-items: center;
1090 gap: 6px;
1091 font-size: 14px;
1092 font-weight: 500;
1093 }
1094
1095 .ka-stock-in {
1096 color: #34c759;
1097 }
1098
1099 .ka-stock-out {
1100 color: #ff3b30;
1101 }
1102
1103 .ka-stock .dashicons {
1104 font-size: 16px;
1105 width: 16px;
1106 height: 16px;
1107 }
1108
1109 /* ===== SORTABLE LIST ===== */
1110 .ka-sortable-list {
1111 list-style: none;
1112 margin: 0;
1113 padding: 0;
1114 max-width: 360px;
1115 }
1116
1117 .ka-sortable-item {
1118 display: flex;
1119 align-items: center;
1120 padding: 14px 16px;
1121 margin-bottom: 8px;
1122 background: #fff;
1123 border: 1px solid rgba(0, 0, 0, 0.08);
1124 border-radius: 12px;
1125 cursor: move;
1126 transition: all 0.2s ease;
1127 }
1128
1129 .ka-sortable-item:hover {
1130 border-color: #0071e3;
1131 box-shadow: 0 2px 8px rgba(0, 113, 227, 0.1);
1132 }
1133
1134 .ka-sortable-item.ui-sortable-helper {
1135 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
1136 border-color: #0071e3;
1137 }
1138
1139 .ka-sortable-item.ui-sortable-placeholder {
1140 visibility: visible !important;
1141 background: rgba(0, 113, 227, 0.08);
1142 border: 2px dashed #0071e3;
1143 }
1144
1145 .ka-sortable-item label {
1146 display: flex;
1147 align-items: center;
1148 gap: 10px;
1149 cursor: pointer;
1150 margin: 0;
1151 font-size: 15px;
1152 }
1153
1154 .ka-sortable-handle {
1155 color: #86868b;
1156 margin-right: 10px;
1157 }
1158
1159 /* ===== PRO NOTICE / UPGRADE CARD ===== */
1160 .ka-pro-notice,
1161 .ka-upgrade-card {
1162 background: linear-gradient(135deg, rgba(139, 92, 246, 0.08) 0%, rgba(124, 58, 237, 0.08) 100%);
1163 border: 1px solid rgba(139, 92, 246, 0.2);
1164 border-radius: 20px;
1165 padding: 40px;
1166 text-align: center;
1167 margin-bottom: 24px;
1168 }
1169
1170 .ka-pro-notice h2,
1171 .ka-upgrade-card h3 {
1172 margin: 0 0 12px;
1173 font-size: 24px;
1174 font-weight: 700;
1175 color: #7c3aed;
1176 }
1177
1178 .ka-pro-notice p,
1179 .ka-upgrade-card p {
1180 margin: 0 0 24px;
1181 font-size: 16px;
1182 color: #86868b;
1183 max-width: 500px;
1184 margin-left: auto;
1185 margin-right: auto;
1186 }
1187
1188 .ka-upgrade-card ul {
1189 text-align: left;
1190 max-width: 400px;
1191 margin: 0 auto 24px;
1192 padding-left: 0;
1193 list-style: none;
1194 }
1195
1196 .ka-upgrade-card li {
1197 margin-bottom: 10px;
1198 padding-left: 28px;
1199 position: relative;
1200 font-size: 15px;
1201 color: #1d1d1f;
1202 }
1203
1204 .ka-upgrade-card li::before {
1205 content: '';
1206 position: absolute;
1207 left: 0;
1208 color: #7c3aed;
1209 font-weight: 600;
1210 }
1211
1212 /* ===== EMPTY STATE ===== */
1213 .ka-empty {
1214 text-align: center;
1215 padding: 60px 20px;
1216 color: #86868b;
1217 }
1218
1219 .ka-empty .dashicons {
1220 font-size: 56px;
1221 width: 56px;
1222 height: 56px;
1223 opacity: 0.3;
1224 margin-bottom: 20px;
1225 }
1226
1227 .ka-empty p {
1228 font-size: 17px;
1229 }
1230
1231 /* ===== TWO COLUMN GRID ===== */
1232 .ka-grid-2 {
1233 display: grid;
1234 grid-template-columns: 1fr 1fr;
1235 gap: 0 40px;
1236 }
1237
1238 /* ===== DARK THEME ===== */
1239 body.ka-v3-dark .ka-admin-wrap {
1240 color: #f5f5f7;
1241 }
1242
1243 body.ka-v3-dark .ka-admin-title {
1244 background: linear-gradient(135deg, #f5f5f7 0%, #a1a1a6 100%);
1245 -webkit-background-clip: text;
1246 background-clip: text;
1247 }
1248
1249 body.ka-v3-dark .ka-admin-subtitle {
1250 color: #86868b;
1251 }
1252
1253 body.ka-v3-dark .ka-btn-secondary {
1254 background: rgba(255, 255, 255, 0.1);
1255 color: #f5f5f7;
1256 }
1257
1258 body.ka-v3-dark .ka-btn-secondary:hover {
1259 background: rgba(255, 255, 255, 0.15);
1260 color: #fff;
1261 }
1262
1263 body.ka-v3-dark .ka-theme-toggle {
1264 background: rgba(255, 255, 255, 0.1);
1265 }
1266
1267 body.ka-v3-dark .ka-theme-toggle:hover {
1268 background: rgba(255, 255, 255, 0.15);
1269 }
1270
1271 body.ka-v3-dark .ka-tabs {
1272 background: rgba(255, 255, 255, 0.08);
1273 border-color: rgba(255, 255, 255, 0.06);
1274 }
1275
1276 body.ka-v3-dark .ka-tab {
1277 color: #86868b;
1278 }
1279
1280 body.ka-v3-dark .ka-tab:hover {
1281 color: #f5f5f7;
1282 }
1283
1284 body.ka-v3-dark .ka-tab.active {
1285 background: rgba(255, 255, 255, 0.12);
1286 color: #f5f5f7;
1287 }
1288
1289 body.ka-v3-dark .ka-card {
1290 background: #1c1c1e;
1291 box-shadow: 0 2px 20px rgba(0, 0, 0, 0.3);
1292 }
1293
1294 body.ka-v3-dark .ka-card-header {
1295 border-bottom-color: rgba(255, 255, 255, 0.08);
1296 }
1297
1298 body.ka-v3-dark .ka-card-header h2,
1299 body.ka-v3-dark .ka-card-header h3 {
1300 color: #f5f5f7;
1301 }
1302
1303 body.ka-v3-dark .ka-card-body {
1304 background: #1c1c1e;
1305 }
1306
1307 body.ka-v3-dark .ka-row {
1308 border-bottom-color: rgba(255, 255, 255, 0.06);
1309 }
1310
1311 body.ka-v3-dark .ka-row-label {
1312 color: #f5f5f7;
1313 }
1314
1315 body.ka-v3-dark .ka-row-field input,
1316 body.ka-v3-dark .ka-row-field textarea,
1317 body.ka-v3-dark .ka-row-field select {
1318 background-color: #2c2c2e;
1319 border-color: rgba(255, 255, 255, 0.1);
1320 color: #f5f5f7;
1321 }
1322
1323 /* Tables (e.g., Categories) also contain inputs/selects outside .ka-row-field */
1324 body.ka-v3-dark .ka-table input[type="text"],
1325 body.ka-v3-dark .ka-table input[type="number"],
1326 body.ka-v3-dark .ka-table input[type="password"],
1327 body.ka-v3-dark .ka-table input[type="email"],
1328 body.ka-v3-dark .ka-table input[type="date"],
1329 body.ka-v3-dark .ka-table textarea,
1330 body.ka-v3-dark .ka-table select {
1331 background-color: #2c2c2e;
1332 border-color: rgba(255, 255, 255, 0.1);
1333 color: #f5f5f7;
1334 }
1335
1336 body.ka-v3-dark .ka-row-field select:not([multiple]) {
1337 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f7' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
1338 }
1339
1340 body.ka-v3-dark .ka-row-field input:focus,
1341 body.ka-v3-dark .ka-row-field textarea:focus,
1342 body.ka-v3-dark .ka-row-field select:focus {
1343 border-color: #0a84ff;
1344 box-shadow: 0 0 0 4px rgba(10, 132, 255, 0.2);
1345 }
1346
1347 body.ka-v3-dark .ka-toggle-slider {
1348 background: #3a3a3c;
1349 }
1350
1351 body.ka-v3-dark .ka-toggle input:checked + .ka-toggle-slider {
1352 background: #30d158;
1353 }
1354
1355 body.ka-v3-dark .ka-radio-item {
1356 color: #f5f5f7;
1357 }
1358
1359 body.ka-v3-dark .ka-submit {
1360 background: rgba(255, 255, 255, 0.04);
1361 border-top-color: rgba(255, 255, 255, 0.08);
1362 }
1363
1364 body.ka-v3-dark .ka-stat-card {
1365 background: #1c1c1e;
1366 }
1367
1368 body.ka-v3-dark .ka-stat-value {
1369 color: #f5f5f7;
1370 }
1371
1372 body.ka-v3-dark .ka-filter-bar {
1373 background: #1c1c1e;
1374 }
1375
1376 body.ka-v3-dark .ka-filter-bar label {
1377 color: #86868b;
1378 }
1379
1380 body.ka-v3-dark .ka-filter-bar input[type="date"] {
1381 background: #2c2c2e;
1382 border-color: rgba(255, 255, 255, 0.1);
1383 color: #f5f5f7;
1384 }
1385
1386 body.ka-v3-dark .ka-filter-bar .button {
1387 background: rgba(255, 255, 255, 0.1);
1388 color: #f5f5f7;
1389 }
1390
1391 body.ka-v3-dark .ka-table th {
1392 background: rgba(255, 255, 255, 0.04);
1393 color: #86868b;
1394 border-bottom-color: rgba(255, 255, 255, 0.08);
1395 }
1396
1397 body.ka-v3-dark .ka-table td {
1398 color: #f5f5f7;
1399 border-bottom-color: rgba(255, 255, 255, 0.06);
1400 }
1401
1402 body.ka-v3-dark .ka-table tbody tr:hover {
1403 background: rgba(255, 255, 255, 0.04);
1404 }
1405
1406 body.ka-v3-dark .ka-product-cell a {
1407 color: #f5f5f7;
1408 }
1409
1410 body.ka-v3-dark .ka-product-cell a:hover {
1411 color: #0a84ff;
1412 }
1413
1414 body.ka-v3-dark .ka-sortable-item {
1415 background: #2c2c2e;
1416 border-color: rgba(255, 255, 255, 0.1);
1417 color: #f5f5f7;
1418 }
1419
1420 body.ka-v3-dark .ka-sortable-item:hover {
1421 border-color: #0a84ff;
1422 }
1423
1424 body.ka-v3-dark .ka-pro-notice,
1425 body.ka-v3-dark .ka-upgrade-card {
1426 background: linear-gradient(135deg, rgba(139, 92, 246, 0.15) 0%, rgba(124, 58, 237, 0.15) 100%);
1427 border-color: rgba(139, 92, 246, 0.3);
1428 }
1429
1430 body.ka-v3-dark .ka-upgrade-card li {
1431 color: #f5f5f7;
1432 }
1433
1434 /*
1435 * The card gets a dark background above, but WordPress core colours headings
1436 * explicitly with `h2, h3 { color: #1d2327 }`, which beats inheritance - so the
1437 * title stayed near-black on the dark card.
1438 */
1439 body.ka-v3-dark .ka-pro-notice h2,
1440 body.ka-v3-dark .ka-pro-notice h3,
1441 body.ka-v3-dark .ka-upgrade-card h2,
1442 body.ka-v3-dark .ka-upgrade-card h3 {
1443 color: #f5f5f7;
1444 }
1445
1446 body.ka-v3-dark .ka-empty {
1447 color: #86868b;
1448 }
1449
1450 /* ===== RESPONSIVE ===== */
1451 @media (max-width: 900px) {
1452 .ka-admin-wrap {
1453 padding: 40px 24px;
1454 }
1455
1456 .ka-admin-title {
1457 font-size: 36px;
1458 }
1459
1460 .ka-grid-2 {
1461 grid-template-columns: 1fr;
1462 }
1463
1464 .ka-stats-grid {
1465 grid-template-columns: repeat(2, 1fr);
1466 }
1467 }
1468
1469 @media (max-width: 782px) {
1470 .ka-admin-header {
1471 flex-direction: column;
1472 text-align: center;
1473 }
1474
1475 .ka-admin-header-left {
1476 flex-direction: column;
1477 align-items: center;
1478 }
1479
1480 .ka-admin-header-actions {
1481 justify-content: center;
1482 }
1483
1484 .ka-row {
1485 flex-direction: column;
1486 gap: 10px;
1487 }
1488
1489 .ka-row-label {
1490 width: 100%;
1491 padding-top: 0;
1492 }
1493
1494 .ka-tabs {
1495 flex-wrap: wrap;
1496 width: 100%;
1497 justify-content: center;
1498 }
1499
1500 .ka-filter-bar {
1501 flex-direction: column;
1502 align-items: stretch;
1503 }
1504
1505 .ka-export-btn {
1506 margin-left: 0;
1507 width: 100%;
1508 justify-content: center;
1509 }
1510
1511 .ka-stats-grid {
1512 grid-template-columns: 1fr;
1513 }
1514
1515 .ka-table {
1516 display: block;
1517 overflow-x: auto;
1518 }
1519 }
1520
1521 /* ===== WP COLOR PICKER ===== */
1522 .wp-picker-container {
1523 display: inline-block;
1524 }
1525
1526 /* Iris (WP Color Picker) relies on content-box sizing for correct geometry; our global
1527 `.ka-admin-wrap * { box-sizing: border-box; }` can break slider placement. */
1528 body.ka-admin-v3 .wp-picker-container .iris-picker,
1529 body.ka-admin-v3 .wp-picker-container .iris-picker * {
1530 box-sizing: content-box;
1531 }
1532
1533 body.ka-admin-v3 .wp-picker-container .iris-picker {
1534 direction: ltr;
1535 }
1536
1537 /* Iris container border (dark theme) */
1538 body.ka-v3-dark .wp-picker-container .iris-border {
1539 border-radius: 3px;
1540 border: 1px solid rgba(255, 255, 255, 0.1);
1541 width: 200px;
1542 background-color: #2c2c2e;
1543 }
1544
1545 .wp-picker-container .wp-color-result {
1546 height: 38px;
1547 border-radius: 8px;
1548 }
1549
1550 body.ka-v3-dark .wp-picker-container .wp-color-result {
1551 border-color: rgba(255, 255, 255, 0.2);
1552 }
1553
1554 /* WP Color Picker text label (dark theme) */
1555 body.ka-v3-dark .wp-picker-container .wp-color-result-text {
1556 background: #2c2c2e;
1557 border-left: 1px solid rgba(255, 255, 255, 0.18);
1558 color: rgba(245, 245, 247, 0.85);
1559 }
1560
1561 .wp-picker-container input.wp-color-picker {
1562 max-width: 100px !important;
1563 }
1564
1565 /* ==========================================================================
1566 Shared form pieces for extension screens (page-shell.php)
1567 ========================================================================== */
1568
1569 .ka-admin-wrap .ka-check {
1570 display: flex;
1571 align-items: flex-start;
1572 gap: 10px;
1573 font-size: 15px;
1574 color: #1d1d1f;
1575 cursor: pointer;
1576 line-height: 1.4;
1577 }
1578
1579 .ka-admin-wrap .ka-check input[type="checkbox"] {
1580 width: 18px;
1581 height: 18px;
1582 margin: 1px 0 0;
1583 accent-color: #0071e3;
1584 flex: 0 0 auto;
1585 }
1586
1587 .ka-admin-wrap .ka-check-group {
1588 display: flex;
1589 flex-direction: column;
1590 gap: 10px;
1591 }
1592
1593 /* A radio with a bold title and a line of explanation under it. */
1594
1595 .ka-admin-wrap .ka-radio-item > span {
1596 display: flex;
1597 flex-direction: column;
1598 gap: 2px;
1599 }
1600
1601 .ka-admin-wrap .ka-radio-item em {
1602 font-style: normal;
1603 font-size: 13px;
1604 color: #6e6e73;
1605 }
1606
1607 .ka-admin-wrap .ka-inline-field {
1608 display: flex;
1609 align-items: center;
1610 gap: 8px;
1611 margin: 12px 0 0;
1612 }
1613
1614 .ka-admin-wrap .ka-inline-field label {
1615 font-size: 13px;
1616 color: #6e6e73;
1617 }
1618
1619 .ka-admin-wrap .ka-color-row {
1620 display: flex;
1621 flex-wrap: wrap;
1622 gap: 18px;
1623 }
1624
1625 .ka-admin-wrap .ka-color-wrap {
1626 display: inline-flex;
1627 align-items: center;
1628 gap: 8px;
1629 font-size: 14px;
1630 color: #1d1d1f;
1631 cursor: pointer;
1632 }
1633
1634 .ka-admin-wrap .ka-color-wrap input[type="color"] {
1635 width: 42px;
1636 height: 30px;
1637 padding: 2px;
1638 border: 1px solid #d2d2d7;
1639 border-radius: 8px;
1640 background: #fff;
1641 cursor: pointer;
1642 }
1643
1644 .ka-admin-wrap .ka-submit {
1645 margin: 24px 0 0;
1646 }
1647
1648 /* Long single-line inputs should fill the field column rather than sit at
1649 WordPress's default width. */
1650 .ka-admin-wrap .ka-row-field > input[type="text"],
1651 .ka-admin-wrap .ka-row-field > input[type="url"],
1652 .ka-admin-wrap .ka-row-field > input[type="email"],
1653 .ka-admin-wrap .ka-row-field > textarea {
1654 width: 100%;
1655 max-width: 520px;
1656 }
1657
1658 .ka-admin-wrap .ka-code-editor {
1659 width: 100%;
1660 min-height: 260px;
1661 font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
1662 font-size: 13px;
1663 line-height: 1.55;
1664 tab-size: 2;
1665 }
1666
1667 /* Dark theme */
1668 body.ka-v3-dark .ka-admin-wrap .ka-check,
1669 body.ka-v3-dark .ka-admin-wrap .ka-color-wrap,
1670 body.ka-v3-dark .ka-admin-wrap .ka-radio-item {
1671 color: #f5f5f7;
1672 }
1673
1674 body.ka-v3-dark .ka-admin-wrap .ka-radio-item em,
1675 body.ka-v3-dark .ka-admin-wrap .ka-inline-field label {
1676 color: #a1a1a6;
1677 }
1678
1679 body.ka-v3-dark .ka-admin-wrap .ka-color-wrap input[type="color"] {
1680 border-color: #3a3a3c;
1681 background: #1c1c1e;
1682 }
1683
1684 /* --- My Account endpoint cards ------------------------------------------ */
1685
1686 .ka-admin-wrap .ka-endpoint-card .ka-card-header {
1687 display: flex;
1688 align-items: center;
1689 gap: 10px;
1690 flex-wrap: wrap;
1691 }
1692
1693 .ka-admin-wrap .ka-endpoint-slug {
1694 font-size: 12px;
1695 padding: 2px 8px;
1696 border-radius: 6px;
1697 background: #f5f5f7;
1698 color: #6e6e73;
1699 }
1700
1701 .ka-admin-wrap .ka-endpoint-toggle {
1702 margin-left: auto;
1703 font-size: 14px;
1704 }
1705
1706 /* A hidden endpoint still needs to be readable and editable, so this is a
1707 dimmed state rather than a greyed-out one. */
1708 .ka-admin-wrap .ka-endpoint-card.is-off .ka-card-header h2,
1709 .ka-admin-wrap .ka-endpoint-card.is-off .ka-endpoint-slug {
1710 opacity: .55;
1711 }
1712
1713 .ka-admin-wrap .ka-check-group--inline {
1714 flex-direction: row;
1715 flex-wrap: wrap;
1716 gap: 8px 20px;
1717 }
1718
1719 .ka-admin-wrap .ka-row--danger .ka-btn-secondary {
1720 color: #c0392b;
1721 border-color: #e6b8b2;
1722 }
1723
1724 .ka-admin-wrap .ka-row--danger .ka-btn-secondary:hover {
1725 background: #fdf1ef;
1726 border-color: #c0392b;
1727 }
1728
1729 body.ka-v3-dark .ka-admin-wrap .ka-endpoint-slug {
1730 background: #2c2c2e;
1731 color: #a1a1a6;
1732 }
1733
1734 body.ka-v3-dark .ka-admin-wrap .ka-row--danger .ka-btn-secondary {
1735 color: #ff6b5e;
1736 border-color: #5a3a37;
1737 }
1738
1739 body.ka-v3-dark .ka-admin-wrap .ka-row--danger .ka-btn-secondary:hover {
1740 background: #3a2523;
1741 border-color: #ff6b5e;
1742 }
1743
1744 /* Right-align the button column of a shared table. */
1745 .ka-admin-wrap .ka-table .ka-table-actions {
1746 text-align: right;
1747 white-space: nowrap;
1748 }
1749
1750 .ka-admin-wrap .ka-table .ka-table-actions .ka-btn + .ka-btn {
1751 margin-left: 6px;
1752 }
1753