PluginProbe ʕ •ᴥ•ʔ
WP 2FA – Two-factor authentication for WordPress / 4.0.0
WP 2FA – Two-factor authentication for WordPress v4.0.0
4.0.0 1.7.1 2.0.0 2.0.1 2.1.0 2.2.0 2.2.1 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.8.0 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0 3.0.1 3.1.0 3.1.1 3.1.1.2 trunk 1.2.0 1.3.0 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.6.0 1.6.1 1.6.2 1.7.0
wp-2fa / includes / assets / css / settings.css
wp-2fa / includes / assets / css Last commit date
phone-picker.css 22 hours ago settings.css 22 hours ago top-bar-banner.css 22 hours ago wizard-new.css 22 hours ago
settings.css
2591 lines
1 :root {
2 --blue-color: #2271B1;
3
4 /* ── Text colours (Figma-aligned) ────────────────────── */
5 --text-title: #2b2e31;
6 --text-primary: #3c434a;
7 --text-dark: #222;
8 --text-body: #3c434a;
9 --text-secondary: #444;
10 --text-light: #555;
11 --text-muted: #646970;
12 --text-placeholder: #999;
13
14 /* ── Border colours ──────────────────────────────────── */
15 --border-color: #DCDCDE;
16 --border-light: #e2e2e4;
17 --border-medium: #ddd;
18 --border-input: #c3c4c7;
19 --border-strong: #c3c4c7;
20 --border-card: #e2e2e4;
21
22 /* ── Background colours ──────────────────────────────── */
23 --bg-white: #fff;
24 --bg-light: #f6f7f7;
25 --bg-hover: #f8f9fa;
26
27 /* ── Status colours ──────────────────────────────────── */
28 --success-color: #00a32a;
29 --error-color: #d63638;
30
31 /* ── Focus ────────────────────────────────────────────── */
32 --focus-shadow-color: rgba(0, 115, 170, 0.2);
33 --focus-shadow-color-alt: rgba(71, 118, 255, 0.2);
34
35 /* ── Font sizes (single scale: 2xs … 2xl) ────────────── */
36 --font-size-2xs: 11px;
37 --font-size-xs: 12px;
38 --font-size-sm: 13px;
39 --font-size-base: 14px;
40 --font-size-md: 16px;
41 --font-size-lg: 18px;
42 --font-size-xl: 28px;
43
44 /* ── Border radius ───────────────────────────────────── */
45 --radius-sm: 2px;
46 --radius-md: 5px;
47 --radius-input: 5px;
48 --radius-lg: 8px;
49 --radius-xl: 8px;
50
51 /* ── Spacing scale (Figma 8-point grid) ──────────────── */
52 --space-xs: 8px;
53 --space-sm: 12px;
54 --space-md: 16px;
55 --space-lg: 24px;
56 --space-xl: 28px;
57 --space-2xl: 32px;
58 }
59
60 .main-settings-new {
61 display: grid;
62 grid-template-columns: 1fr 320px;
63 gap: 8px;
64 margin-top: 16px;
65 }
66
67 .main-settings-new h2 {
68 margin: 0 0 8px;
69 font-weight: 600;
70 padding: 16px 20px 0;
71 font-size: var(--font-size-xl);
72 line-height: 1.3;
73 }
74
75 .page-header {
76 display: flex;
77 align-items: center;
78 justify-content: space-between;
79 margin-bottom: 8px;
80 }
81
82 .page-header .page-header-actions {
83 margin-left: 16px;
84 }
85
86 .main-left {
87 background: var(--bg-white);
88 border: 1px solid var(--border-color);
89 border-radius: var(--radius-lg);
90 align-self: start;
91 }
92
93 .main-left a {
94 color: var(--blue-color);
95 text-decoration: none;
96 }
97
98 .wp-2fa_page_wp-2fa-help-contact-us .main-left {
99 background: none !important;
100 }
101
102 .settings-card {
103 margin-top: 16px;
104 }
105
106 #general-settings-group-title-item {
107 display: none;
108 }
109
110 .main-left .group-title {
111 font-weight: 700;
112 margin-bottom: 8px;
113 color: var(--blue-color);
114 line-height: 1.3;
115 letter-spacing: 0.6px;
116 font-size: var(--font-size-2xs);
117 text-transform: uppercase;
118 padding: 24px 20px 0;
119 }
120
121 .main-left .settings-list {
122 list-style: none;
123 margin: 0;
124 padding: 0;
125 }
126
127 .main-left .settings-list li {
128 padding: 16px 20px;
129 border-radius: 0;
130 margin-bottom: 0;
131 border: none;
132 display: flex;
133 align-items: center;
134 justify-content: space-between;
135 border-bottom: 1px solid var(--border-light);
136 background: transparent;
137 /* smoothly move when hovered */
138 transition: transform .3s ease;
139 cursor: pointer;
140 font-size: var(--font-size-md);
141 font-style: normal;
142 font-weight: 600;
143 line-height: 1.3;
144 }
145
146 .main-left .settings-list li:first-child {
147 border-top: 1px solid var(--border-light);
148 }
149
150 .main-left .description {
151 font-size: var(--font-size-sm);
152 color: var(--text-muted);
153 font-weight: 400;
154 margin-top: 4px;
155 padding: 16px 20px 0;
156 line-height: 1.5;
157 }
158
159 .main-left .description-settings-card {
160 font-size: var(--font-size-sm);
161 color: var(--text-muted);
162 margin-top: 4px;
163 font-weight: 400;
164 padding: 16px 0px 20px;
165 line-height: 1.5;
166 }
167
168 /* When an element is both a page intro (.description) and has .description-settings-card,
169 keep the page intro padding so side inset is preserved and bottom gap is dropped. */
170 .main-left .description.description-settings-card {
171 padding: 16px 20px 10px 0px;
172 }
173
174 /* Tab intro description shown below tabs (e.g. method selection) */
175 .wp2fa-tab-intro {
176 /* border: 1px solid var(--border-color); */
177 /* border-radius: 6px; */
178 /* padding: 16px 20px; */
179 margin: 0 0 16px;
180 font-size: var(--font-size-sm);
181 line-height: 1.6;
182 color: var(--text-body);
183 }
184
185 .wp2fa-tab-intro a {
186 color: var(--blue-color);
187 text-decoration: none;
188 }
189
190 .wp2fa-tab-intro a:hover {
191 text-decoration: underline;
192 }
193
194 .settings-list li:last-child {
195 /* border-bottom: 1px solid var(--border-light); */
196 border-bottom: none;
197 }
198
199 .settings-list li a {
200 flex: 1;
201 color: var(--text-dark);
202 text-decoration: none;
203 display: block;
204 /* only animate text color; movement is handled by the <li> so the chevron
205 (pseudo element) moves with it as well */
206 transition: color .18s cubic-bezier(.2, .8, .2, 1);
207 }
208
209 .settings-list li::after {
210 content: "";
211 width: 7px;
212 height: 12px;
213 margin-left: 8px;
214 flex-shrink: 0;
215 display: inline-block;
216 color: #3c434a;
217 background-color: currentColor;
218 -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='12' viewBox='0 0 7 12' fill='none'%3E%3Cpath d='M0.9375 0.9375L5.9375 5.9375L0.9375 10.9375' stroke='%23000' stroke-width='1.875' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
219 mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='12' viewBox='0 0 7 12' fill='none'%3E%3Cpath d='M0.9375 0.9375L5.9375 5.9375L0.9375 10.9375' stroke='%23000' stroke-width='1.875' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
220 }
221
222 .settings-list li:hover,
223 .settings-list li:focus {
224 background: transparent;
225 box-shadow: none;
226 outline: none;
227 /* move the entire list item including the chevron */
228 transform: translateX(4px);
229 }
230
231 .settings-list li:hover,
232 .settings-list li:focus {
233 color: var(--blue-color);
234 ;
235 }
236
237 /* make the chevron blue on hover as well */
238 .settings-list li:hover::after,
239 .settings-list li:focus::after {
240 color: var(--blue-color);
241 }
242
243 /* Badge for custom/per-role policy indicator */
244 .settings-list li .wp-2fa-badge {
245 display: inline-block;
246 padding: 3px 12px;
247 font-size: 13px;
248 font-weight: 500;
249 color: var(--blue-color, #2271b1);
250 background: rgba(34, 113, 177, 0.08);
251 border-radius: 20px;
252 margin-left: auto;
253 margin-right: 8px;
254 white-space: nowrap;
255 line-height: 1.6;
256 }
257
258 .cta-title {
259 font-weight: 700;
260 color: var(--text-dark);
261 }
262
263 .subscribe-card {
264 border: 1px solid var(--border-light);
265 padding: 14px;
266 border-radius: var(--radius-lg);
267 }
268
269 .subscribe-form .regular-text {
270 width: 100%;
271 margin-bottom: 8px;
272 }
273
274 .subscribe-btn {
275 width: 100%;
276 }
277
278 /* ---- Sticky save bar (desktop + mobile identical) ---- */
279 .save-footer {
280 position: fixed;
281 bottom: 0;
282 left: 0;
283 right: 0;
284 z-index: 9999;
285 display: flex;
286 justify-content: flex-start;
287 align-items: center;
288 padding: 12px 20px;
289 background: var(--bg-white);
290 border-top: 1px solid #e0e0e0;
291 box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
292 }
293
294 /* Account for the WP admin sidebar so the bar never slides behind it.
295 Use the same margin-left values WordPress core applies to #wpcontent
296 plus its 20 px padding-left so the footer aligns with page content. */
297 @media (min-width: 783px) {
298 body:not(.folded) .save-footer {
299 left: 160px;
300 }
301
302 body.folded .save-footer {
303 left: 36px;
304 }
305 }
306
307 /* Prevent page content from being hidden behind the sticky bar */
308 .wp-2fa-settings-wrapper.wp-2fa-settings-new {
309 padding-bottom: 68px;
310 max-width: 100%;
311 }
312
313 .save-footer .js-save-settings-new {
314 white-space: nowrap;
315 }
316
317 .settings-page {
318 margin: 0 auto;
319 background: var(--bg-white);
320 padding: 20px;
321 border-radius: var(--radius-lg);
322 }
323
324 .settings-page h2 {
325 padding: 0;
326 }
327
328 .breadcrumbs {
329 font-size: var(--font-size-base);
330 margin-bottom: 24px;
331 color: var(--text-light);
332 display: flex;
333 align-items: center;
334 gap: 12px;
335 }
336
337 .breadcrumbs a {
338 color: var(--blue-color);
339 text-decoration: none;
340 }
341
342 .breadcrumbs .back-button {
343 display: inline-flex;
344 align-items: center;
345 justify-content: center;
346 width: 24px;
347 height: 24px;
348 background: var(--blue-color);
349 color: #fff;
350 border-radius: var(--radius-md);
351 text-decoration: none;
352 border: none;
353 cursor: pointer;
354 line-height: 1;
355 flex-shrink: 0;
356 }
357
358 .breadcrumbs .back-button:active {
359 background: #3560d2;
360 }
361
362 .breadcrumbs ul {
363 display: flex;
364 list-style: none;
365 margin: 0;
366 padding: 0;
367 gap: 4px;
368 }
369
370 .breadcrumbs li {
371 display: flex;
372 align-items: center;
373 margin-right: 7px;
374 font-size: var(--font-size-xs);
375 margin-bottom: 0;
376 font-style: normal;
377 font-weight: 400;
378 line-height: 165%;
379 /* 21.45px */
380 }
381
382 .breadcrumbs li:not(:last-child)::after {
383 content: '\\';
384 color: var(--blue-color);
385 margin-left: 8px;
386 }
387
388 .settings-page h1 {
389 margin: 0 0 8px 0;
390 font-size: 32px;
391 font-weight: 600;
392 color: var(--text-primary);
393 padding-bottom: 16px;
394 border-bottom: 1px solid var(--border-color);
395 }
396
397 .intro {
398 font-size: var(--font-size-base);
399 color: var(--text-muted);
400 margin-bottom: 32px;
401 line-height: 1.6;
402 max-width: 712px;
403 }
404
405 .intro a {
406 color: #2563eb;
407 text-decoration: underline;
408 }
409
410 .intro a:hover {
411 color: #1d4ed8;
412 }
413
414 .settings-card {
415 margin-bottom: 32px;
416 padding: 0;
417 border: none;
418 border-bottom: 1px solid var(--border-color);
419 }
420
421 .wp2fa-wizard-panel .settings-card {
422 border-bottom: none !important;
423 }
424
425 .settings-card:last-child {
426 border-bottom: none;
427 }
428
429 .section-title {
430 font-size: var(--font-size-lg);
431 font-weight: 600;
432 color: var(--text-primary);
433 margin: 24px 0 12px 0;
434 line-height: 1.3;
435 }
436
437 .section-sub-title {
438 font-size: var(--font-size-base);
439 font-weight: 600;
440 color: var(--text-primary);
441 margin: 20px 0 8px 0;
442 }
443
444 .section-desc {
445 font-size: var(--font-size-base);
446 color: var(--text-muted);
447 margin: 0 0 16px 0;
448 line-height: 1.6;
449 }
450
451 .settings-row {
452 display: flex;
453 flex-wrap: wrap;
454 justify-content: flex-start;
455 gap: 40px;
456 padding: 6px 0;
457 align-items: flex-start;
458 }
459
460 /* Editor rows: left label-group + right editor */
461 .settings-label-group {
462 width: 200px;
463 flex-shrink: 0;
464 display: flex;
465 flex-direction: column;
466 gap: 6px;
467 }
468
469 .settings-label-group .settings-label {
470 width: auto;
471 }
472
473 .settings-label-group .description-settings-card {
474 font-size: var(--font-size-sm);
475 color: var(--text-muted);
476 line-height: 1.5;
477 padding: 0;
478 margin: 0;
479 }
480
481 .settings-label-group .extra-text {
482 font-size: var(--font-size-sm);
483 color: var(--text-muted);
484 line-height: 1.5;
485 }
486
487 .settings-label {
488 font-size: var(--font-size-base);
489 font-weight: 500;
490 color: var(--text-body);
491 width: 200px;
492 flex-shrink: 0;
493 }
494
495 .settings-control {
496 display: flex;
497 flex-direction: column;
498 gap: 8px;
499 flex: 1;
500 }
501
502 .number-input-wrap {
503 display: inline-flex;
504 align-items: center;
505 gap: 8px;
506 }
507
508 .number-label {
509 font-size: var(--font-size-base);
510 color: var(--text-body);
511 line-height: 1;
512 }
513
514 .inline-controls {
515 display: flex;
516 flex-direction: row;
517 align-items: center;
518 gap: 8px;
519 flex: 1;
520 }
521
522 .url-prefix-wrap {
523 display: flex;
524 align-items: center;
525 gap: 0;
526 flex: 1;
527 }
528
529 .url-prefix-text {
530 font-size: var(--font-size-base);
531 color: var(--text-light);
532 white-space: nowrap;
533 padding: 6px 10px;
534 line-height: 1.4;
535 flex-shrink: 0;
536 }
537
538 .url-prefix-wrap .regular-text {
539 flex: 1;
540 min-width: 120px;
541 }
542
543 .url-prefix-actions {
544 display: flex;
545 gap: 8px;
546 /* margin-top: 8px; */Customize 2FA user profile page area
547 }
548
549 .settings-row .description-settings-card {
550 flex-basis: 100%;
551 padding: 0;
552 }
553
554 .radio-option:hover,
555 .checkbox-option:hover {
556 color: #1a1a1a;
557 }
558
559 /* Animations for inner elements only */
560 @keyframes radioDotAppear {
561 from {
562 opacity: 0;
563 }
564
565 to {
566 opacity: 1;
567 }
568 }
569
570 @keyframes checkmarkAppear {
571 from {
572 opacity: 0;
573 }
574
575 to {
576 opacity: 1;
577 }
578 }
579
580 /* When a settings-row has radios but no label column, stack full-width */
581 .settings-row:not(:has(.settings-label)):has(.radio-option) {
582 flex-direction: column;
583 gap: 12px;
584 }
585
586 .radio-option,
587 .checkbox-option {
588 font-size: var(--font-size-base);
589 color: var(--text-body);
590 cursor: pointer;
591 display: flex;
592 align-items: center;
593 gap: 8px;
594 }
595
596 .checkbox-option input[type="checkbox"]:checked::before,
597 .radio-option input[type="radio"]:checked::before {
598 content: none !important;
599 }
600
601 /* Radio button styling */
602 .radio-option input[type="radio"] {
603 cursor: pointer;
604 width: 20px;
605 height: 20px;
606 flex-shrink: 0;
607 appearance: none;
608 -webkit-appearance: none;
609 -moz-appearance: none;
610 border: 1px solid var(--border-strong);
611 border-radius: 50%;
612 background: var(--bg-white);
613 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05);
614 transition: border-color 0.2s ease;
615 position: relative;
616 }
617
618 .radio-option input[type="radio"]:hover {
619 border-color: var(--text-muted);
620 }
621
622 .radio-option input[type="radio"]:checked::after {
623 content: '';
624 position: absolute;
625 top: 50%;
626 left: 50%;
627 transform: translate(-50%, -50%);
628 width: 10px;
629 height: 10px;
630 background: var(--blue-color);
631 border-radius: 50%;
632 animation: radioDotAppear 0.3s ease-out;
633 }
634
635 .radio-option input[type="radio"]:focus {
636 outline: none;
637 box-shadow: 0 0 0 3px var(--focus-shadow-color-alt);
638 }
639
640 /* Checkbox styling */
641 .checkbox-option input[type="checkbox"] {
642 cursor: pointer;
643 width: 22px;
644 height: 22px;
645 flex-shrink: 0;
646 appearance: none;
647 -webkit-appearance: none;
648 -moz-appearance: none;
649 border: 2px solid var(--text-placeholder);
650 border-radius: var(--radius-sm);
651 background: var(--bg-white);
652 transition: border-color 0.2s ease;
653 position: relative;
654 }
655
656 .checkbox-option input[type="checkbox"]:hover {
657 border-color: var(--text-muted);
658 }
659
660 .checkbox-option input[type="checkbox"]:checked {
661 border-color: var(--blue-color);
662 background: var(--bg-white);
663 }
664
665 .checkbox-option input[type="checkbox"]:checked::after {
666 content: '';
667 position: absolute;
668 top: 50%;
669 left: 50%;
670 transform: translate(-50%, -50%);
671 width: 13px;
672 height: 10px;
673 background-color: var(--blue-color);
674 -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='10' viewBox='0 0 13 10' fill='none'%3E%3Cpath d='M11 0L4.2 6.8L1.4 4L0 5.4L4.2 9.6L12.4 1.4' fill='%23000'/%3E%3C/svg%3E") center / contain no-repeat;
675 mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='10' viewBox='0 0 13 10' fill='none'%3E%3Cpath d='M11 0L4.2 6.8L1.4 4L0 5.4L4.2 9.6L12.4 1.4' fill='%23000'/%3E%3C/svg%3E") center / contain no-repeat;
676 animation: checkmarkAppear 0.3s ease-out;
677 }
678
679 .checkbox-option input[type="checkbox"]:focus {
680 outline: none;
681 box-shadow: 0 0 0 3px var(--focus-shadow-color-alt);
682 }
683
684 .radio-option:hover,
685 .checkbox-option:hover {
686 color: var(--text-primary);
687 }
688
689 /* Responsive Design */
690 @media (max-width: 768px) {
691 .settings-page {
692 padding: 16px;
693 }
694
695 .settings-row {
696 flex-direction: column;
697 gap: 12px;
698 }
699
700 .settings-label-group {
701 width: auto;
702 }
703
704 .settings-label {
705 min-width: unset;
706 }
707
708 .breadcrumbs {
709 flex-wrap: wrap;
710 gap: 8px;
711 }
712
713 .breadcrumbs ul {
714 flex-wrap: wrap;
715 }
716 }
717
718 /* The sticky footer is the sole save UI — hide the redundant header button */
719 .page-header .js-save-settings-new {
720 display: none;
721 }
722
723 /* Responsive grid for small screens */
724 @media all and (max-width: 980px) {
725 .main-settings-new {
726 grid-template-columns: 1fr;
727 }
728
729 .main-right {
730 order: 2;
731 }
732 }
733
734 .settings-page {
735 display: none;
736 }
737
738 /* Card Container */
739 .providers-container {
740 /* border: 1px solid #e1e1e1;
741 border-radius: 4px;
742 background: #fff; */
743 overflow: hidden;
744 }
745
746 /* Provider Item */
747 .provider-item {
748 margin-top: 8px;
749 border: 1px solid var(--border-card);
750 border-radius: var(--radius-md);
751 background: var(--bg-white);
752 }
753
754 .provider-summary {
755 display: flex;
756 justify-content: space-between;
757 align-items: center;
758 padding: 16px;
759 cursor: pointer;
760 background-color: #fafafa45;
761 user-select: none;
762 transition: background-color 0.2s ease;
763 }
764
765 .provider-summary:hover {
766 background-color: var(--bg-light);
767 }
768
769 .provider-name {
770 font-size: 16px;
771 font-weight: 500;
772 color: #24282f;
773 }
774
775 .provider-arrow {
776 width: 12px;
777 height: 7px;
778 color: var(--text-muted);
779 background-color: currentColor;
780 -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7' fill='none'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%23000' stroke-width='1.875' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
781 mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7' fill='none'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%23000' stroke-width='1.875' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
782 transition: transform 0.2s ease;
783 display: inline-flex;
784 align-items: center;
785 justify-content: center;
786 transform-origin: center;
787 }
788
789 .provider-item.open .provider-arrow {
790 transform: rotate(180deg);
791 }
792
793 /* Provider Content */
794 .provider-content {
795 display: none;
796 padding: 16px;
797 background-color: var(--bg-white);
798 /* border-top: 1px solid var(--border-card); */
799 }
800
801 .provider-item.open .provider-content {
802 display: block;
803 }
804
805 /* Provider docs link */
806 .provider-docs-link {
807 text-align: right;
808 margin: 0 0 12px 0;
809 font-size: var(--font-size-base);
810 color: var(--text-muted);
811 }
812
813 .provider-docs-link a {
814 color: var(--blue-color);
815 text-decoration: underline;
816 font-weight: 500;
817 }
818
819 .provider-docs-link a:hover {
820 color: #135e96;
821 }
822
823 /* Form Fields */
824 .form-group {
825 display: flex;
826 align-items: flex-start;
827 gap: 16px;
828 margin-bottom: 16px;
829 }
830
831 .form-label {
832 flex: 0 0 250px;
833 padding-top: 8px;
834 font-size: var(--font-size-base);
835 font-weight: 500;
836 color: #24282f;
837 }
838
839 .form-field {
840 flex: 1;
841 }
842
843 .form-input {
844 width: 100%;
845 /* padding: 8px 12px; */
846 /* border: 1px solid #ccc;
847 border-radius: 4px; */
848 font-size: var(--font-size-base);
849 font-family: inherit;
850 min-height: 40px !important;
851 }
852
853 .form-input:focus {
854 outline: none;
855 border-color: var(--blue-color);
856 box-shadow: 0 0 0 2px rgba(0, 115, 170, 0.1);
857 }
858
859 .form-button {
860 margin-top: 8px;
861 padding: 8px 16px;
862 background-color: var(--bg-white);
863 color: var(--blue-color);
864 border: 1px solid var(--blue-color);
865 border-radius: var(--radius-md);
866 font-size: var(--font-size-base);
867 font-weight: 500;
868 cursor: pointer;
869 transition: all 0.2s ease;
870 }
871
872 .form-button:hover {
873 background-color: var(--blue-color);
874 color: var(--bg-white);
875 }
876
877 /* editor styles */
878
879 /* Activate the tab whose preceding radio is checked */
880 #tab-settings:checked~.tab-nav .tab-label[for="tab-settings"],
881 #tab-templates:checked~.tab-nav .tab-label[for="tab-templates"],
882 #tab-sms:checked~.tab-nav .tab-label[for="tab-sms"] {
883 color: var(--blue-color);
884 border-bottom-color: var(--blue-color);
885 }
886
887 /* Tab panels — all hidden by default */
888 .tab-panel {
889 display: none;
890 padding-top: 28px;
891 }
892
893 #tab-settings:checked~.tab-panel-settings,
894 #tab-templates:checked~.tab-panel-templates,
895 #tab-sms:checked~.tab-panel-sms {
896 display: block;
897 }
898
899 /* ── Tip / notice box ────────────────────────────────────── */
900 .notice-tip {
901 display: flex;
902 gap: 12px;
903 background: #edf5fc;
904 border: 1px solid #d0e4f6;
905 border-radius: var(--radius-md);
906 padding: 12px 16px;
907 font-size: var(--font-size-sm);
908 color: #444;
909 line-height: 1.65;
910 margin-top: 20px;
911 }
912
913 .notice-tip-icon {
914 flex-shrink: 0;
915 width: 20px;
916 height: 20px;
917 background: var(--blue-color);
918 color: #fff;
919 border-radius: 50%;
920 display: flex;
921 align-items: center;
922 justify-content: center;
923 font-size: var(--font-size-xs);
924 font-weight: 700;
925 font-style: italic;
926 margin-top: 1px;
927 user-select: none;
928 }
929
930 .notice-tip-body {
931 flex: 1;
932 }
933
934 .notice-tip strong {
935 display: inline;
936 color: var(--text-primary);
937 font-size: var(--font-size-sm);
938 font-weight: 700;
939 }
940
941 .notice-tip strong::after {
942 content: ': ';
943 }
944
945 /* ── Test-email-delivery card ────────────────────────────── */
946 .delivery-test-card {
947 padding-bottom: 24px;
948 }
949
950 .delivery-test-card .section-desc {
951 max-width: 400px;
952 line-height: 1.55;
953 }
954
955 /* ── Button styles (outline primary, reusable) ───────────── */
956 .btn-outline {
957 display: inline-block;
958 padding: 7px 16px;
959 font-size: var(--font-size-base);
960 font-weight: 500;
961 color: var(--blue-color);
962 background: var(--bg-white);
963 border: 1px solid var(--blue-color);
964 border-radius: var(--radius-md);
965 cursor: pointer;
966 transition: background 0.18s, color 0.18s;
967 text-decoration: none;
968 line-height: 1.5;
969 width: fit-content;
970 }
971
972 .btn-outline:hover {
973 background: var(--blue-color);
974 color: var(--bg-white);
975 }
976
977 /* ── "Use another email" extra fields ────────────────────── */
978 .extra-email-fields {
979 display: none;
980 margin-top: 12px;
981 gap: 10px;
982 flex-direction: column;
983 }
984
985 #use-another:checked~.settings-control .extra-email-fields {
986 display: flex;
987 }
988
989 /* (Works only within the same form context; see note below) */
990
991 /* ── Email template accordion ────────────────────────────── */
992 /* Reuses .provider-item / .provider-summary / .provider-content
993 from settings.css, adding only missing bits. */
994 .template-accordion {
995 margin-top: 0;
996 }
997
998 .template-accordion .provider-summary {
999 background: var(--bg-white);
1000 }
1001
1002 .template-accordion .provider-desc {
1003 font-size: var(--font-size-sm);
1004 color: var(--text-muted);
1005 margin: 0;
1006 }
1007
1008 .template-accordion .provider-header {
1009 display: flex;
1010 flex-direction: column;
1011 gap: 4px;
1012 }
1013
1014 /* ── Accordion form rows: extend the existing .settings-row / .settings-label /
1015 .settings-control classes for use inside .provider-content. Only the
1016 differences from the base definitions are overridden here. ────────────── */
1017 .provider-content .settings-row {
1018 padding: 5px 0;
1019 /* border-bottom: 1px solid var(--border-light); */
1020 gap: 24px;
1021 }
1022
1023 .provider-content .settings-row:last-child {
1024 border-bottom: none;
1025 }
1026
1027 .provider-content .settings-label {
1028 width: 200px;
1029 padding-top: 8px;
1030 }
1031
1032 .provider-content .settings-control {
1033 min-width: 0;
1034 }
1035
1036 /* Subject input */
1037 .subject-input {
1038 width: 100%;
1039 padding: 8px 12px;
1040 border: 1px solid var(--border-input);
1041 border-radius: var(--radius-md);
1042 font-size: var(--font-size-base);
1043 font-family: inherit;
1044 min-height: 38px;
1045 }
1046
1047 .subject-input:focus {
1048 outline: none;
1049 border-color: var(--blue-color);
1050 box-shadow: 0 0 0 2px var(--focus-shadow-color);
1051 }
1052
1053 /* ── Body editor (Visual / Code inner tabs) ──────────────── */
1054 /* Inner tab radios */
1055 .body-editor-radio {
1056 display: none;
1057 }
1058
1059 .body-editor-wrap {
1060 border: 1px solid var(--border-input);
1061 border-radius: var(--radius-md);
1062 overflow: hidden;
1063 }
1064
1065 .body-editor-inner {
1066 display: flex;
1067 flex-direction: column;
1068 gap: 12px;
1069 align-items: flex-start;
1070 }
1071
1072 /* Token list below the editor */
1073 .token-list {
1074 font-size: var(--font-size-sm);
1075 color: var(--text-light);
1076 line-height: 2;
1077 }
1078
1079 .token-list code {
1080 background: none;
1081 font-family: inherit;
1082 font-size: var(--font-size-sm);
1083 color: var(--text-secondary);
1084 }
1085
1086 .token-list .token-row {
1087 display: flex;
1088 flex-wrap: wrap;
1089 gap: 4px;
1090 }
1091
1092 .token-badge {
1093 display: inline-block;
1094 background: #f1f5f9;
1095 border: 1px solid #e2e8f0;
1096 border-radius: var(--radius-sm);
1097 padding: 2px 6px;
1098 font-size: var(--font-size-xs);
1099 color: var(--text-light);
1100 font-family: monospace;
1101 line-height: 1.7;
1102 white-space: nowrap;
1103 }
1104
1105 /* Editor area */
1106 .editor-area {
1107 width: 100%;
1108 min-width: 0;
1109 }
1110
1111 /* Visual / Code tab bar at top-right of editor */
1112 .editor-tab-bar {
1113 display: flex;
1114 justify-content: flex-end;
1115 border-bottom: 1px solid var(--border-medium);
1116 background: var(--bg-light);
1117 }
1118
1119 .editor-tab-label {
1120 padding: 7px 14px;
1121 font-size: var(--font-size-sm);
1122 font-weight: 500;
1123 color: var(--text-muted);
1124 cursor: pointer;
1125 border-bottom: 2px solid transparent;
1126 margin-bottom: -1px;
1127 transition: color 0.15s, border-color 0.15s;
1128 }
1129
1130 .editor-tab-label:hover {
1131 color: var(--blue-color);
1132 }
1133
1134 #editor-visual:checked~.body-editor-wrap .editor-tab-label[for="editor-visual"],
1135 #editor-code:checked~.body-editor-wrap .editor-tab-label[for="editor-code"] {
1136 color: var(--blue-color);
1137 border-bottom-color: var(--blue-color);
1138 background: var(--bg-white);
1139 }
1140
1141 /* TinyMCE-style toolbar */
1142 .editor-toolbar {
1143 display: flex;
1144 align-items: center;
1145 gap: 2px;
1146 padding: 6px 8px;
1147 background: #f9f9f9;
1148 border-bottom: 1px solid var(--border-medium);
1149 flex-wrap: wrap;
1150 }
1151
1152 .toolbar-select {
1153 padding: 4px 6px;
1154 border: 1px solid var(--border-input);
1155 border-radius: var(--radius-sm);
1156 font-size: var(--font-size-sm);
1157 background: var(--bg-white);
1158 cursor: pointer;
1159 margin-right: 4px;
1160 }
1161
1162 .toolbar-btn {
1163 width: 28px;
1164 height: 28px;
1165 border: 1px solid var(--border-medium);
1166 border-radius: var(--radius-sm);
1167 background: var(--bg-white);
1168 cursor: pointer;
1169 font-size: var(--font-size-sm);
1170 font-weight: 600;
1171 display: inline-flex;
1172 align-items: center;
1173 justify-content: center;
1174 color: var(--text-secondary);
1175 transition: background 0.15s, border-color 0.15s;
1176 padding: 0;
1177 line-height: 1;
1178 }
1179
1180 .toolbar-btn:hover {
1181 background: #e8e8e8;
1182 border-color: #bbb;
1183 }
1184
1185 .toolbar-sep {
1186 width: 1px;
1187 height: 20px;
1188 background: var(--border-medium);
1189 margin: 0 4px;
1190 }
1191
1192 /* Editor body textarea / visual area */
1193 .editor-visual-body {
1194 padding: 14px;
1195 min-height: 160px;
1196 font-size: var(--font-size-base);
1197 line-height: 1.7;
1198 color: var(--text-body);
1199 }
1200
1201 .editor-code-body {
1202 display: none;
1203 }
1204
1205 #editor-visual:checked~.body-editor-wrap .editor-visual-body {
1206 display: block;
1207 }
1208
1209 #editor-visual:checked~.body-editor-wrap .editor-code-body {
1210 display: none;
1211 }
1212
1213 #editor-code:checked~.body-editor-wrap .editor-visual-body {
1214 display: none;
1215 }
1216
1217 #editor-code:checked~.body-editor-wrap .editor-code-body {
1218 display: block;
1219 }
1220
1221 .editor-code-body textarea {
1222 width: 100%;
1223 min-height: 160px;
1224 padding: 12px;
1225 font-family: monospace;
1226 font-size: var(--font-size-sm);
1227 border: none;
1228 resize: vertical;
1229 outline: none;
1230 color: var(--text-body);
1231 background: var(--bg-light);
1232 line-height: 1.6;
1233 }
1234
1235 /* ── SMS accordion re-uses .provider-item etc ─────────────── */
1236
1237 /* ── Responsive ──────────────────────────────────────────── */
1238 @media (max-width: 680px) {
1239 .page-wrapper {
1240 padding: 16px;
1241 }
1242
1243 .tab-label {
1244 padding: 10px 12px;
1245 font-size: 11px;
1246 }
1247
1248 .provider-content .settings-row {
1249 flex-direction: column;
1250 gap: 8px;
1251 }
1252
1253 .provider-content .settings-label {
1254 width: auto;
1255 padding-top: 0;
1256 }
1257
1258 .body-editor-inner {
1259 flex-direction: column;
1260 }
1261
1262 .token-list {}
1263
1264 .settings-row {
1265 flex-direction: column;
1266 gap: 10px;
1267 }
1268
1269 .settings-label {
1270 width: auto;
1271 }
1272 }
1273
1274 /* ── Pure-CSS tab system ─────────────────────────────────── */
1275 /* Hidden radio inputs drive tab switching with no JS */
1276 .tab-radio {
1277 display: none !important;
1278 }
1279
1280 .tab-nav {
1281 display: flex;
1282 gap: 0;
1283 border-bottom: 1px solid var(--border-medium);
1284 margin: 24px -18px 0 -18px;
1285 flex-wrap: wrap;
1286 }
1287
1288 .tab-label {
1289 padding: 12px 16px;
1290 font-size: var(--font-size-sm);
1291 font-weight: 500;
1292 letter-spacing: normal;
1293 text-transform: uppercase;
1294 color: var(--text-muted);
1295 cursor: pointer;
1296 border-bottom: 3px solid transparent;
1297 margin-bottom: -1px;
1298 transition: color 0.15s, border-color 0.15s;
1299 white-space: nowrap;
1300 }
1301
1302 .tab-label:hover {
1303 color: var(--blue-color);
1304 border-bottom-color: var(--blue-color);
1305 }
1306
1307 /* Activate the tab whose preceding radio is checked */
1308 #tab-settings:checked~.tab-nav .tab-label[for="tab-settings"],
1309 #tab-templates:checked~.tab-nav .tab-label[for="tab-templates"],
1310 #tab-sms:checked~.tab-nav .tab-label[for="tab-sms"] {
1311 color: var(--blue-color);
1312 border-bottom-color: var(--blue-color);
1313 }
1314
1315 /* Tab panels — all hidden by default */
1316 .tab-panel {
1317 display: none;
1318 padding-top: 28px;
1319 }
1320
1321 #tab-settings:checked~.tab-panel-settings,
1322 #tab-templates:checked~.tab-panel-templates,
1323 #tab-sms:checked~.tab-panel-sms {
1324 display: block;
1325 }
1326
1327 /* ============================================================
1328 New field types – color, image-select, font-select
1329 ============================================================ */
1330
1331 /* --- Color picker ------------------------------------------ */
1332 .wp2fa-color-picker-wrap {
1333 display: flex;
1334 align-items: center;
1335 gap: 10px;
1336 }
1337
1338 .wp2fa-color-picker-wrap .wp-color-result {
1339 border-radius: 4px;
1340 border: 1px solid #bbb;
1341 cursor: pointer;
1342 }
1343
1344 /* --- Image / logo selector --------------------------------- */
1345 .wp2fa-image-select-wrap {
1346 display: flex;
1347 flex-direction: column;
1348 gap: 8px;
1349 }
1350
1351 .wp2fa-image-select-controls {
1352 display: flex;
1353 align-items: center;
1354 gap: 12px;
1355 flex-wrap: wrap;
1356 }
1357
1358 .wp2fa-image-desc {
1359 font-size: var(--font-size-sm);
1360 color: var(--text-muted);
1361 }
1362
1363 .wp2fa-image-preview {
1364 display: inline-flex;
1365 align-items: flex-start;
1366 gap: 6px;
1367 border: 1px solid var(--border-medium);
1368 border-radius: var(--radius-md);
1369 padding: 4px;
1370 background: var(--bg-light);
1371 max-width: 200px;
1372 margin-top: 4px;
1373 }
1374
1375 .wp2fa-image-preview.hidden {
1376 display: none;
1377 }
1378
1379 .wp2fa-image-preview img {
1380 max-width: 160px;
1381 max-height: 80px;
1382 display: block;
1383 object-fit: contain;
1384 border-radius: 2px;
1385 }
1386
1387 .wp2fa-media-remove {
1388 background: none;
1389 border: none;
1390 cursor: pointer;
1391 color: var(--text-placeholder);
1392 font-size: 16px;
1393 line-height: 1;
1394 padding: 2px 4px;
1395 border-radius: var(--radius-sm);
1396 flex-shrink: 0;
1397 align-self: flex-start;
1398 }
1399
1400 .wp2fa-media-remove:hover {
1401 color: #c0392b;
1402 background: #fee;
1403 }
1404
1405 /* --- Font selector ----------------------------------------- */
1406 .wp2fa-font-select-wrap {
1407 display: flex;
1408 align-items: center;
1409 }
1410
1411 .wp2fa-font-select {
1412 min-width: 240px;
1413 height: 34px;
1414 border: 1px solid #bbb;
1415 border-radius: var(--radius-md);
1416 padding: 0 8px;
1417 font-size: var(--font-size-base);
1418 background: var(--bg-white);
1419 color: var(--text-body);
1420 cursor: pointer;
1421 }
1422
1423 .wp2fa-font-select:focus {
1424 outline: none;
1425 border-color: var(--blue-color);
1426 box-shadow: 0 0 0 2px var(--focus-shadow-color);
1427 }
1428
1429 /* Login CSS row – description below the label on the left */
1430 .wp2fa-login-css-row {
1431 align-items: flex-start;
1432 }
1433
1434 .wp2fa-login-css-label-desc.description {
1435 padding: 0 0 6px;
1436 font-size: var(--font-size-xs);
1437 color: #888;
1438 width: 200px;
1439 flex-shrink: 0;
1440 }
1441
1442 .wp2fa-login-custom-css {
1443 width: 100%;
1444 min-height: 120px;
1445 font-family: monospace;
1446 font-size: var(--font-size-sm);
1447 resize: vertical;
1448 }
1449
1450 /* Also target the raw textarea inside the login-CSS row (textarea() method
1451 wraps in body-editor-inner; the class on the setting won't reach it) */
1452 .wp2fa-login-css-row textarea {
1453 width: 100%;
1454 min-height: 120px;
1455 font-family: monospace;
1456 font-size: var(--font-size-sm);
1457 resize: vertical;
1458 box-sizing: border-box;
1459 }
1460
1461 .main-settings-new .disabled {
1462 opacity: 0.5;
1463 pointer-events: none;
1464 }
1465
1466 /* ============================================================
1467 Toggle Switch (checkbox styled as a toggle)
1468 ============================================================ */
1469 .toggle-switch {
1470 display: inline-flex;
1471 align-items: center;
1472 gap: 12px;
1473 cursor: pointer;
1474 font-size: var(--font-size-base);
1475 color: var(--text-body);
1476 user-select: none;
1477 }
1478
1479 .toggle-switch input[type="checkbox"] {
1480 position: absolute;
1481 opacity: 0;
1482 width: 0;
1483 height: 0;
1484 pointer-events: none;
1485 }
1486
1487 .toggle-slider {
1488 position: relative;
1489 display: inline-block;
1490 width: 44px;
1491 height: 22px;
1492 background: var(--bg-white);
1493 border: 1px solid var(--blue-color);
1494 border-radius: 12px;
1495 transition: background 0.25s ease, border-color 0.25s ease;
1496 flex-shrink: 0;
1497 box-sizing: border-box;
1498 }
1499
1500 .toggle-slider::after {
1501 content: '';
1502 position: absolute;
1503 top: 2px;
1504 left: 2px;
1505 width: 16px;
1506 height: 16px;
1507 background: var(--blue-color);
1508 border-radius: 50%;
1509 transition: transform 0.25s ease, background 0.25s ease;
1510 box-shadow: none;
1511 }
1512
1513 .toggle-switch input[type="checkbox"]:checked+.toggle-slider {
1514 background: var(--blue-color);
1515 border-color: var(--blue-color);
1516 }
1517
1518 .toggle-switch input[type="checkbox"]:checked+.toggle-slider::after {
1519 transform: translateX(20px);
1520 background: var(--bg-white);
1521 }
1522
1523 .toggle-switch input[type="checkbox"]:focus+.toggle-slider {
1524 box-shadow: 0 0 0 3px var(--focus-shadow-color);
1525 }
1526
1527 .toggle-label {
1528 font-weight: 500;
1529 }
1530
1531 /* Toggle rows — reduce vertical gap between toggle and its description */
1532 .settings-row:has(.toggle-switch) {
1533 row-gap: 4px;
1534 }
1535
1536 .settings-row .toggle-switch~.description-settings-card {
1537 padding-left: 56px;
1538 }
1539
1540 /* ============================================================
1541 User Roles Grid (multi-column responsive checkbox grid)
1542 ============================================================ */
1543 .user-roles-grid {
1544 display: flex;
1545 flex-wrap: wrap;
1546 gap: 8px 0;
1547 padding: 12px 0;
1548 margin-left: 35px;
1549 }
1550
1551 .user-roles-grid .user-role-item {
1552 flex: 0 0 33.333%;
1553 box-sizing: border-box;
1554 padding: 4px 8px;
1555 font-size: var(--font-size-base);
1556 }
1557
1558 @media (max-width: 768px) {
1559 .user-roles-grid .user-role-item {
1560 flex: 0 0 50%;
1561 }
1562 }
1563
1564 @media (max-width: 480px) {
1565 .user-roles-grid .user-role-item {
1566 flex: 0 0 100%;
1567 }
1568 }
1569
1570 /* ============================================================
1571 Passkeys Settings Page Layout
1572 ============================================================ */
1573 .wp-2fa-passkeys-settings .main-settings-new.passkeys-main {
1574 grid-template-columns: 1fr 320px;
1575 max-width: 100%;
1576 }
1577
1578 .wp-2fa-passkeys-settings .main-settings-new.passkeys-main>form {
1579 min-width: 0;
1580 }
1581
1582 .wp-2fa-passkeys-settings .main-left {
1583 padding: 20px;
1584 }
1585
1586 .wp-2fa-passkeys-settings .settings-card {
1587 padding-bottom: 24px;
1588 }
1589
1590 .wp-2fa-passkeys-settings .passkeys-enforcement-card {
1591 padding-left: 0;
1592 }
1593
1594 .wp-2fa-passkeys-settings .passkeys-roles-selector {
1595 margin-left: 30px;
1596 }
1597
1598 /* ============================================================
1599 Stat Cards (summary statistics row)
1600 ============================================================ */
1601 .stat-cards-row {
1602 display: flex;
1603 flex-wrap: wrap;
1604 gap: 16px;
1605 padding: 16px 0;
1606 }
1607
1608 .stat-card {
1609 flex: 1 1 0;
1610 min-width: 140px;
1611 display: flex;
1612 align-items: baseline;
1613 gap: 8px;
1614 padding: 16px 20px;
1615 background: var(--bg-white);
1616 border: 2px solid var(--blue-color);
1617 border-radius: var(--radius-md);
1618 }
1619
1620 .stat-value {
1621 font-size: 28px;
1622 font-weight: 700;
1623 color: var(--blue-color);
1624 line-height: 1;
1625 }
1626
1627 .stat-label {
1628 font-size: var(--font-size-base);
1629 color: var(--text-light);
1630 white-space: nowrap;
1631 }
1632
1633 @media (max-width: 680px) {
1634 .stat-cards-row {
1635 flex-direction: column;
1636 }
1637
1638 .stat-card {
1639 flex: none;
1640 width: 100%;
1641 }
1642 }
1643
1644 /* ============================================================
1645 Data Table (report tables)
1646 ============================================================ */
1647 .report-table-wrap {
1648 overflow-x: visible;
1649 }
1650
1651 @media (max-width: 768px) {
1652 .report-table-wrap {
1653 overflow-x: auto;
1654 }
1655 }
1656
1657 .report-table-header {
1658 display: flex;
1659 align-items: center;
1660 justify-content: space-between;
1661 gap: 16px;
1662 flex-wrap: wrap;
1663 }
1664
1665 .report-table-header .section-title {
1666 margin: 0;
1667 }
1668
1669 .report-table-header .btn-outline {
1670 flex-shrink: 0;
1671 }
1672
1673 .report-data-table {
1674 width: 100%;
1675 border-collapse: collapse;
1676 margin: 16px 0 0;
1677 font-size: var(--font-size-base);
1678 table-layout: fixed;
1679 }
1680
1681 .report-data-table thead th {
1682 background: var(--blue-color);
1683 color: var(--bg-white);
1684 padding: 12px 12px;
1685 text-align: center;
1686 font-weight: 600;
1687 font-size: var(--font-size-sm);
1688 line-height: 1.35;
1689 }
1690
1691 .report-data-table thead th:first-child {
1692 text-align: left;
1693 }
1694
1695 .report-data-table tbody td {
1696 padding: 12px 12px;
1697 border-bottom: 1px solid var(--border-light);
1698 text-align: center;
1699 color: var(--text-body);
1700 }
1701
1702 .report-data-table tbody td:first-child {
1703 text-align: left;
1704 font-weight: 500;
1705 }
1706
1707 .report-data-table tbody tr:last-child td {
1708 border-bottom: 2px solid var(--blue-color);
1709 }
1710
1711 .report-data-table tbody tr:hover {
1712 background: var(--bg-hover);
1713 }
1714
1715 /* ============================================================
1716 Reports Page Layout
1717 ============================================================ */
1718 .wp-2fa-reports-page .main-settings-new.reports-main {
1719 grid-template-columns: 1fr;
1720 }
1721
1722 .wp-2fa-reports-page .main-left {
1723 padding: 20px;
1724 }
1725
1726 /* ============================================================
1727 Policies New Page
1728 ============================================================ */
1729
1730 /* Reuse the same two-column grid and card layout as Settings New */
1731 /* .wp-2fa-policies-new .main-settings-new {
1732 display: grid;
1733 grid-template-columns: 1fr 320px;
1734 gap: 28px;
1735 margin-top: 18px;
1736 } */
1737
1738 @media all and (max-width: 980px) {
1739 .wp-2fa-policies-new .main-settings-new {
1740 grid-template-columns: 1fr;
1741 }
1742 }
1743
1744 /* Prevent page content hiding behind the sticky save bar */
1745 .wp-2fa-settings-wrapper.wp-2fa-policies-new {
1746 padding-bottom: 68px;
1747 max-width: 100%;
1748 }
1749
1750 /* ============================================================
1751 Toast Notifications
1752 ============================================================ */
1753 .wp2fa-toast {
1754 position: fixed;
1755 bottom: 80px;
1756 left: 50%;
1757 transform: translateX(-50%) translateY(20px);
1758 padding: 12px 24px;
1759 border-radius: var(--radius-lg);
1760 font-size: var(--font-size-base);
1761 font-weight: 500;
1762 z-index: 100000;
1763 opacity: 0;
1764 transition: opacity 0.3s ease, transform 0.3s ease;
1765 pointer-events: none;
1766 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1767 }
1768
1769 .wp2fa-toast--visible {
1770 opacity: 1;
1771 transform: translateX(-50%) translateY(0);
1772 pointer-events: auto;
1773 }
1774
1775 .wp2fa-toast--success {
1776 background: var(--success-color);
1777 color: var(--bg-white);
1778 }
1779
1780 .wp2fa-toast--error {
1781 background: var(--error-color);
1782 color: var(--bg-white);
1783 }
1784
1785
1786 /* Sidebar (right) */
1787 .mp-sidebar {
1788 display: flex;
1789 flex-direction: column;
1790 gap: 16px;
1791 }
1792
1793 .mp-sidebar-card {
1794 background: #fff;
1795 border: 1px solid var(--border-card);
1796 border-radius: var(--radius-xl);
1797 padding: 24px 20px;
1798 }
1799
1800 .mp-sidebar-card-title {
1801 margin: 0 0 16px;
1802 padding: 0 0 12px;
1803 font-size: 12px;
1804 font-weight: 700;
1805 letter-spacing: 0.5px;
1806 color: #1d2327;
1807 text-transform: uppercase;
1808 border-bottom: 1px solid #dcdcde;
1809 }
1810
1811 /* Premium: link lists */
1812 .mp-sidebar-links {
1813 list-style: none;
1814 margin: 0;
1815 padding: 0;
1816 }
1817
1818 .mp-sidebar-links li {
1819 margin-bottom: 10px;
1820 }
1821
1822 .mp-sidebar-links li:last-child {
1823 margin-bottom: 0;
1824 }
1825
1826 .mp-sidebar-links a {
1827 color: #2271b1;
1828 text-decoration: none;
1829 font-size: 14px;
1830 line-height: 1.5;
1831 }
1832
1833 .mp-sidebar-links a:hover,
1834 .mp-sidebar-links a:focus {
1835 color: #135e96;
1836 text-decoration: underline;
1837 }
1838
1839 /* Premium: promo section */
1840 .mp-sidebar-promo-text {
1841 margin: 0 0 8px;
1842 font-size: 14px;
1843 line-height: 1.6;
1844 color: #3c434a;
1845 }
1846
1847 .mp-sidebar-promo-link {
1848 display: inline-block;
1849 margin-bottom: 4px;
1850 font-size: 14px;
1851 font-weight: 500;
1852 color: #2271b1;
1853 text-decoration: none;
1854 }
1855
1856 .mp-sidebar-promo-link:hover,
1857 .mp-sidebar-promo-link:focus {
1858 color: #135e96;
1859 text-decoration: underline;
1860 }
1861
1862 .mp-sidebar-divider {
1863 border: none;
1864 border-top: 1px solid #dcdcde;
1865 margin: 16px 0;
1866 }
1867
1868 /* Premium: footer */
1869 .mp-sidebar-footer {
1870 display: flex;
1871 align-items: center;
1872 justify-content: center;
1873 gap: 6px;
1874 padding: 12px 0;
1875 font-size: 13px;
1876 color: #646970;
1877 }
1878
1879 .mp-sidebar-footer-logo {
1880 height: 18px;
1881 width: auto;
1882 vertical-align: middle;
1883 }
1884
1885 .mp-sidebar-footer-icon {
1886 width: 18px;
1887 height: 19px;
1888 flex-shrink: 0;
1889 }
1890
1891 .mp-sidebar-footer-text {
1892 width: 72px;
1893 height: 14px;
1894 flex-shrink: 0;
1895 }
1896
1897 /* Free: upgrade banner */
1898 .mp-sidebar-upgrade {
1899 border: 2px solid #2271b1;
1900 border-radius: 8px;
1901 padding: 28px 24px;
1902 text-align: start;
1903 }
1904
1905 .mp-sidebar-upgrade-header {
1906 display: flex;
1907 align-items: center;
1908 gap: 10px;
1909 margin-bottom: 16px;
1910 }
1911
1912 .mp-sidebar-upgrade-logo {
1913 width: 36px;
1914 height: auto;
1915 }
1916
1917 .mp-sidebar-upgrade-title {
1918 font-size: 18px;
1919 font-weight: 700;
1920 color: #1d2327;
1921 }
1922
1923 .mp-sidebar-upgrade-tagline {
1924 margin: 0 0 16px;
1925 font-size: 14px;
1926 line-height: 1.5;
1927 color: #1d2327;
1928 }
1929
1930 .mp-sidebar-upgrade-features {
1931 list-style: none;
1932 margin: 0 0 24px;
1933 padding: 0;
1934 }
1935
1936 .mp-sidebar-upgrade-features li {
1937 position: relative;
1938 padding-inline-start: 28px;
1939 margin-bottom: 12px;
1940 font-size: 14px;
1941 line-height: 1.5;
1942 color: #3c434a;
1943 }
1944
1945 .mp-sidebar-upgrade-features li::before {
1946 content: '';
1947 position: absolute;
1948 inset-inline-start: 0;
1949 top: 2px;
1950 width: 18px;
1951 height: 18px;
1952 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232271b1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
1953 background-size: contain;
1954 background-repeat: no-repeat;
1955 }
1956
1957 .mp-sidebar-upgrade-btn {
1958 display: block;
1959 width: 100%;
1960 padding: 12px 24px;
1961 margin-bottom: 20px;
1962 font-size: 15px;
1963 font-weight: 600;
1964 text-align: center;
1965 text-decoration: none;
1966 color: #fff;
1967 background: var(--blue-color, #2271B1);
1968 border: none;
1969 border-radius: var(--radius-md);
1970 cursor: pointer;
1971 transition: background 0.2s;
1972 box-sizing: border-box;
1973 }
1974
1975 .mp-sidebar-upgrade-btn:hover,
1976 .mp-sidebar-upgrade-btn:focus {
1977 background: #135e96;
1978 color: #fff;
1979 text-decoration: none;
1980 }
1981
1982 .mp-sidebar-upgrade-guarantee-title {
1983 margin: 0 0 4px;
1984 font-size: 14px;
1985 text-align: center;
1986 color: #1d2327;
1987 }
1988
1989 .mp-sidebar-upgrade-guarantee {
1990 margin: 0;
1991 font-size: 13px;
1992 text-align: center;
1993 color: #646970;
1994 }
1995
1996 /* Shared buttons (used on about-us & support pages) */
1997 .mp-about-btn-filled,
1998 .mp-about-btn-outline {
1999 display: inline-block;
2000 padding: 8px 24px;
2001 font-size: 13px;
2002 font-weight: 600;
2003 text-decoration: none;
2004 border-radius: 4px;
2005 cursor: pointer;
2006 transition: background 0.2s, color 0.2s;
2007 text-align: center;
2008 align-self: flex-start;
2009 }
2010
2011 .mp-about-btn-filled {
2012 background: #2271b1;
2013 color: #fff !important;
2014 border: none;
2015 }
2016
2017 .mp-about-btn-filled:hover,
2018 .mp-about-btn-filled:focus {
2019 background: #135e96;
2020 color: #fff;
2021 }
2022
2023 .mp-about-btn-outline {
2024 background: #fff;
2025 color: #2271b1;
2026 border: 1px solid #2271b1;
2027 }
2028
2029 .mp-about-btn-outline:hover,
2030 .mp-about-btn-outline:focus {
2031 background: #f0f7fc;
2032 color: #135e96;
2033 }
2034
2035 .passkeys-settings-main-wrapper #passkeys-description-item,
2036 .passkeys-settings-main-wrapper .form-group.settings-row,
2037 .passkeys-settings-main-wrapper #passkeys-enforcement-card,
2038 .passkeys-settings-main-wrapper #bypass-2fa-description-item {
2039 padding: 18px 20px 0 !important;
2040 }
2041
2042 .reports-settings-main-wrapper h2 {
2043
2044 padding: 0 !important;
2045
2046 }
2047
2048 .main-settings-new.reports-main {
2049 margin-right: 20px;
2050 }
2051
2052 /* ═══════════════════════════════════════════════════
2053 Premium Badge & Gate
2054 ═══════════════════════════════════════════════════ */
2055 .wp2fa-premium-badge {
2056 display: inline-flex;
2057 align-items: center;
2058 gap: 4px;
2059 padding: 2px 10px;
2060 border: 1px solid var(--border-color);
2061 border-radius: 4px;
2062 background: var(--bg-light);
2063 color: var(--text-muted);
2064 font-size: 11px;
2065 font-weight: 600;
2066 letter-spacing: 0.5px;
2067 line-height: 20px;
2068 vertical-align: middle;
2069 user-select: none;
2070 margin-right: 6px;
2071 }
2072
2073 .wp2fa-premium-badge svg {
2074 flex-shrink: 0;
2075 }
2076
2077 .checkbox-option .wp2fa-premium-badge,
2078 .toggle-switch .wp2fa-premium-badge {
2079 vertical-align: middle;
2080 }
2081
2082 .wp2fa-premium-gate-locked {
2083 position: relative;
2084 opacity: 0.7;
2085 pointer-events: none;
2086 user-select: none;
2087 }
2088
2089 .wp2fa-premium-gate-locked input,
2090 .wp2fa-premium-gate-locked select,
2091 .wp2fa-premium-gate-locked textarea,
2092 .wp2fa-premium-gate-locked button {
2093 pointer-events: none !important;
2094 }
2095
2096 .wp2fa-premium-gate-locked .wp2fa-premium-badge {
2097 pointer-events: auto;
2098 opacity: 1;
2099 }
2100
2101 .wp2fa-premium-methods-preview {
2102 margin-top: 0;
2103 }
2104
2105 .wp2fa-premium-methods-preview .wp2fa-premium-method-item {
2106 cursor: default;
2107 }
2108
2109 .wp2fa-premium-methods-preview .wp2fa-sortable-handle {
2110 opacity: 0.4;
2111 cursor: default;
2112 }
2113
2114 .wp2fa-premium-methods-preview .wp2fa-sortable-checkbox {
2115 display: inline-flex;
2116 align-items: center;
2117 gap: 8px;
2118 }
2119
2120 /* Locked premium settings list items on the Settings page */
2121 .wp2fa-premium-settings-list {
2122 border-top: none;
2123 }
2124
2125 .wp2fa-premium-settings-list .wp2fa-premium-settings-item {
2126 cursor: default;
2127 opacity: 0.6;
2128 }
2129
2130 .wp2fa-premium-settings-list .wp2fa-premium-settings-item > :not(.wp2fa-premium-badge) {
2131 pointer-events: none;
2132 }
2133
2134 .wp2fa-premium-settings-list .wp2fa-premium-settings-item:hover,
2135 .wp2fa-premium-settings-list .wp2fa-premium-settings-item:focus {
2136 transform: none;
2137 color: inherit;
2138 }
2139
2140 .wp2fa-premium-settings-list .wp2fa-premium-settings-item .wp2fa-premium-badge {
2141 pointer-events: auto;
2142 cursor: pointer;
2143 opacity: 1;
2144 }
2145
2146 .wp2fa-premium-settings-list .wp2fa-premium-settings-item .option-value {
2147 flex: 1;
2148 }
2149
2150 /* Enterprise upsell banner shown on limited White Labeling tabs */
2151 .wp2fa-enterprise-upsell-banner {
2152 display: flex;
2153 align-items: center;
2154 justify-content: space-between;
2155 gap: 24px;
2156 margin: 0 0 20px;
2157 padding: 16px;
2158 border: 1px solid #d5d7db;
2159 border-radius: 10px;
2160 background: #e9eaec;
2161 }
2162
2163 .wp2fa-enterprise-upsell-banner__content {
2164 display: flex;
2165 align-items: center;
2166 gap: 18px;
2167 min-width: 0;
2168 }
2169
2170 .wp2fa-enterprise-upsell-banner__icon {
2171 display: inline-flex;
2172 align-items: center;
2173 justify-content: center;
2174 width: 33px;
2175 height: 49px;
2176 flex-shrink: 0;
2177 }
2178
2179 .wp2fa-enterprise-upsell-banner__icon svg {
2180 display: block;
2181 width: 33px;
2182 height: 49px;
2183 }
2184
2185 .wp2fa-enterprise-upsell-banner__text {
2186 min-width: 0;
2187 }
2188
2189 .wp2fa-enterprise-upsell-banner__title {
2190 margin: 0 0 6px;
2191 color: #363f4a;
2192 font-size: 16px;
2193 font-weight: 700;
2194 line-height: 1.15;
2195 }
2196
2197 .wp2fa-enterprise-upsell-banner__highlight {
2198 color: #2271b1;
2199 }
2200
2201 .wp2fa-enterprise-upsell-banner__desc {
2202 margin: 0;
2203 color: #5f6670;
2204 font-size: 14px;
2205 line-height: 1.35;
2206 }
2207
2208 .wp2fa-enterprise-upsell-banner__button {
2209 display: inline-flex;
2210 align-items: center;
2211 justify-content: center;
2212 min-width: 0;
2213 padding: 12px;
2214 border: 2px solid var(--blue-color);
2215 border-radius: var(--radius-xl);
2216 background: transparent;
2217 color: #2271b1;
2218 font-size: 14px;
2219 font-weight: 500;
2220 line-height: 1.2;
2221 text-decoration: none;
2222 transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
2223 white-space: nowrap;
2224 flex-shrink: 0;
2225 }
2226
2227 .wp2fa-enterprise-upsell-banner__button:hover,
2228 .wp2fa-enterprise-upsell-banner__button:focus {
2229 border-color: #135e96;
2230 background: #f0f7fc;
2231 color: #135e96;
2232 text-decoration: none;
2233 }
2234
2235 @media (max-width: 1300px) {
2236 .wp2fa-enterprise-upsell-banner__button {
2237 min-width: 0;
2238 }
2239 }
2240
2241 @media (max-width: 980px) {
2242 .wp2fa-enterprise-upsell-banner {
2243 flex-direction: column;
2244 align-items: flex-start;
2245 padding: 22px;
2246 }
2247
2248 .wp2fa-enterprise-upsell-banner__button {
2249 width: 100%;
2250 min-width: 0;
2251 }
2252 }
2253
2254 /* ═══════════════════════════════════════════════════
2255 Premium Locked Panel (reusable component)
2256 ═══════════════════════════════════════════════════ */
2257 .wp2fa-premium-locked-panel {
2258 margin: 0;
2259 padding: 24px;
2260 border: 1px solid var(--border-color);
2261 border-top: none;
2262 border-radius: 0 0 12px 12px;
2263 background: #F0F0F1;
2264 }
2265
2266 /* Remove bottom spacing from settings-card when locked panel follows */
2267 .settings-card + .wp2fa-premium-locked-panel {
2268 /* margin-top: -32px; */
2269 }
2270
2271 .policies-settings-main-wrapper > .settings-card:has(+ .wp2fa-premium-locked-panel) {
2272 margin-bottom: 0;
2273 border-bottom: none;
2274 }
2275
2276 /* White card inside the gray panel */
2277 .wp2fa-premium-locked-panel__card {
2278 background: var(--bg-white);
2279 border: 1px solid var(--border-color);
2280 border-radius: 10px;
2281 overflow: hidden;
2282 padding-bottom: 14px;
2283 }
2284
2285 /* --- Banner --- */
2286 .wp2fa-premium-locked-panel__banner {
2287 display: flex;
2288 align-items: center;
2289 justify-content: space-between;
2290 gap: 24px;
2291 padding: 20px;
2292 border-bottom: 1px solid var(--border-color);
2293 }
2294
2295 .wp2fa-premium-locked-panel__banner-content {
2296 display: flex;
2297 align-items: center;
2298 gap: 18px;
2299 min-width: 0;
2300 }
2301
2302 .wp2fa-premium-locked-panel__banner-icon {
2303 display: inline-flex;
2304 align-items: center;
2305 justify-content: center;
2306 width: 33px;
2307 height: 49px;
2308 flex-shrink: 0;
2309 }
2310
2311 .wp2fa-premium-locked-panel__banner-icon svg {
2312 display: block;
2313 width: 33px;
2314 height: 49px;
2315 }
2316
2317 .wp2fa-premium-locked-panel__banner-text {
2318 min-width: 0;
2319 }
2320
2321 .wp2fa-premium-locked-panel__banner-title {
2322 margin: 0 0 4px;
2323 color: var(--text-dark);
2324 font-size: 16px;
2325 font-weight: 700;
2326 line-height: 1.3;
2327 }
2328
2329 .wp2fa-premium-locked-panel__banner-desc {
2330 margin: 0;
2331 color: var(--text-muted);
2332 font-size: 14px;
2333 line-height: 1.4;
2334 }
2335
2336 .wp2fa-premium-locked-panel__banner-badge.wp2fa-premium-badge {
2337 margin-left: 0;
2338 margin-right: 0;
2339 flex-shrink: 0;
2340 cursor: pointer;
2341 }
2342
2343 .wp2fa-premium-locked-panel__banner-button {
2344 display: inline-flex;
2345 align-items: center;
2346 justify-content: center;
2347 padding: 10px 18px;
2348 border: 2px solid var(--blue-color);
2349 border-radius: 10px;
2350 background: transparent;
2351 color: var(--blue-color);
2352 font-size: 14px;
2353 font-weight: 500;
2354 line-height: 1.2;
2355 text-decoration: none;
2356 white-space: nowrap;
2357 flex-shrink: 0;
2358 transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
2359 }
2360
2361 .wp2fa-premium-locked-panel__banner-button:hover,
2362 .wp2fa-premium-locked-panel__banner-button:focus {
2363 border-color: #135e96;
2364 background: #f0f7fc;
2365 color: #135e96;
2366 text-decoration: none;
2367 }
2368
2369 /* --- Items list --- */
2370 .wp2fa-premium-locked-panel__list {
2371 list-style: none;
2372 margin: 0;
2373 padding: 0;
2374 }
2375
2376 .wp2fa-premium-locked-panel__item {
2377 display: flex;
2378 align-items: center;
2379 padding: 16px 20px;
2380 border-bottom: 1px solid var(--border-color);
2381 cursor: default;
2382 }
2383
2384 .wp2fa-premium-locked-panel__item:last-child {
2385 border-bottom: none;
2386 }
2387
2388 .wp2fa-premium-locked-panel__item:first-child {
2389 border-top: none;
2390 }
2391
2392 .wp2fa-premium-locked-panel__item--hidden {
2393 display: none;
2394 }
2395
2396 .wp2fa-premium-locked-panel__item--hidden.wp2fa-premium-locked-panel__item--visible {
2397 display: flex;
2398 }
2399
2400 .wp2fa-premium-locked-panel__item-lock.wp2fa-premium-badge {
2401 display: inline-flex;
2402 align-items: center;
2403 justify-content: center;
2404 width: 32px;
2405 height: 32px;
2406 flex-shrink: 0;
2407 margin-right: 12px;
2408 padding: 0;
2409 border: 1px solid var(--border-color);
2410 border-radius: var(--radius-md);
2411 background: var(--bg-light);
2412 cursor: pointer;
2413 transition: background-color 0.15s ease, border-color 0.15s ease;
2414 font-size: 0;
2415 letter-spacing: 0;
2416 line-height: 1;
2417 gap: 0;
2418 }
2419
2420 .wp2fa-premium-locked-panel__item-lock.wp2fa-premium-badge:hover,
2421 .wp2fa-premium-locked-panel__item-lock.wp2fa-premium-badge:focus {
2422 background: #f0f7fc;
2423 border-color: var(--blue-color);
2424 outline: none;
2425 }
2426
2427 .wp2fa-premium-locked-panel__item-lock.wp2fa-premium-badge svg {
2428 display: block;
2429 }
2430
2431 .wp2fa-premium-locked-panel__item-lock:not(.wp2fa-premium-badge) {
2432 display: inline-flex;
2433 align-items: center;
2434 justify-content: center;
2435 width: 32px;
2436 height: 32px;
2437 flex-shrink: 0;
2438 margin-right: 12px;
2439 padding: 0;
2440 border: 1px solid var(--border-color);
2441 border-radius: var(--radius-md);
2442 background: var(--bg-light);
2443 font-size: 0;
2444 line-height: 1;
2445 }
2446
2447 .wp2fa-premium-locked-panel__item-lock:not(.wp2fa-premium-badge) svg {
2448 display: block;
2449 }
2450
2451 .wp2fa-premium-locked-panel__item-title {
2452 flex: 1;
2453 color: #a7aaad;
2454 font-size: var(--font-size-md);
2455 font-weight: 500;
2456 line-height: 1.4;
2457 }
2458
2459 .wp2fa-premium-locked-panel__item-chevron {
2460 width: 7px;
2461 height: 12px;
2462 color: #c3c4c7;
2463 background-color: currentColor;
2464 -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='12' viewBox='0 0 7 12' fill='none'%3E%3Cpath d='M0.9375 0.9375L5.9375 5.9375L0.9375 10.9375' stroke='%23000' stroke-width='1.875' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
2465 mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='12' viewBox='0 0 7 12' fill='none'%3E%3Cpath d='M0.9375 0.9375L5.9375 5.9375L0.9375 10.9375' stroke='%23000' stroke-width='1.875' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
2466 margin-left: 8px;
2467 flex-shrink: 0;
2468 display: inline-block;
2469 }
2470
2471 /* --- Toggle button --- */
2472 .wp2fa-premium-locked-panel__toggle {
2473 display: inline-block;
2474 margin: 15px 0px 9px 64px;
2475 padding: 0;
2476 border: none;
2477 background: none;
2478 color: var(--text-muted);
2479 font-size: var(--font-size-sm);
2480 font-weight: 500;
2481 cursor: pointer;
2482 text-decoration: none;
2483 transition: color 0.15s ease;
2484 font-style: italic;
2485 }
2486
2487 .wp2fa-premium-locked-panel__toggle:hover,
2488 .wp2fa-premium-locked-panel__toggle:focus {
2489 color: var(--blue-color);
2490 outline: none;
2491 }
2492
2493 /* Responsive */
2494 @media (max-width: 1300px) {
2495 .wp2fa-premium-locked-panel__banner {
2496 gap: 16px;
2497 }
2498 }
2499
2500 @media (max-width: 980px) {
2501 .wp2fa-premium-locked-panel__banner {
2502 flex-direction: column;
2503 align-items: flex-start;
2504 }
2505
2506 .wp2fa-premium-locked-panel__banner-button {
2507 width: 100%;
2508 text-align: center;
2509 }
2510 }
2511
2512 #passkeys-enforcement-card {
2513 padding-top: 0 !important;
2514 margin-top: -57px !important
2515 }
2516
2517 #primary-methods-desc-item {
2518 padding-bottom: 20px !important;
2519 }
2520
2521 #custom-user-page-sub-settings .form-group.settings-row, #trusted-devices-sub-settings .form-group.settings-row {
2522 margin-left: 57px !important;
2523 }
2524 /* ── WP admin button overrides (repoint #3858e9 → accent) ─── */
2525 .wp-2fa_page .button.button-primary,
2526 .wp-2fa_page .button-primary {
2527 background: var(--blue-color);
2528 border-color: var(--blue-color);
2529 border-radius: var(--radius-md);
2530 color: #fff;
2531 }
2532
2533 .wp-2fa_page .button.button-primary:hover,
2534 .wp-2fa_page .button-primary:hover {
2535 background: #135e96;
2536 border-color: #135e96;
2537 }
2538
2539 .wp-2fa_page .button.button-primary:active,
2540 .wp-2fa_page .button-primary:active {
2541 background: #0a4b78;
2542 border-color: #0a4b78;
2543 }
2544
2545 /* Secondary / outline buttons */
2546 .wp-2fa_page .button,
2547 .wp-2fa_page .button-secondary {
2548 border-radius: var(--radius-md);
2549 border-color: var(--blue-color);
2550 color: var(--blue-color);
2551 }
2552
2553 .wp-2fa_page .button:hover,
2554 .wp-2fa_page .button-secondary:hover {
2555 background: var(--blue-color);
2556 border-color: var(--blue-color);
2557 color: #fff;
2558 }
2559
2560 /* Input overrides — radius and border color */
2561 .wp-2fa_page input[type="text"],
2562 .wp-2fa_page input[type="email"],
2563 .wp-2fa_page input[type="url"],
2564 .wp-2fa_page input[type="number"],
2565 .wp-2fa_page input[type="password"],
2566 .wp-2fa_page select,
2567 .wp-2fa_page textarea {
2568 border-radius: var(--radius-input);
2569 border-color: var(--border-input);
2570 }
2571
2572 /* Color picker button override */
2573 .wp-2fa_page .wp-color-result,
2574 .wp-2fa_page .button.wp-color-result {
2575 border-radius: var(--radius-md);
2576 }
2577
2578 .wp-2fa_page .wp-picker-container .wp-color-result-text {
2579 border-radius: 0 var(--radius-md) var(--radius-md) 0;
2580 }
2581
2582 #passkeys-bypass-card {
2583 border-bottom: none !important;
2584 }
2585
2586 .no-width .settings-label {
2587 width: auto !important;
2588 flex-shrink: 0;
2589 margin-left: -3px;
2590
2591 }