PluginProbe
404 Solution / 4.1.19
404 Solution v4.1.19
4.3.5 4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.2.0 4.1.19 4.1.18 4.1.17 4.1.16 4.1.15 4.1.13 4.1.12 4.1.11 4.1.10 4.1.9 4.1.8 4.1.7 4.1.6 4.1.5 4.1.4 4.1.3 trunk 2.30.0 All 109 releases
404-solution / includes / html / adminThemes.css

adminThemes.css in 404 Solution 4.1.19, at includes/html/adminThemes.css

872 lines 28.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * 404 Solution Admin Theme Styles
3 *
4 * This file defines the theme system for the admin pages.
5 * Themes are applied via the data-theme attribute on the body element.
6 *
7 * Available themes:
8 * - default: Default WordPress styling - no custom theme applied
9 * - mono: Monochrome Minimal (Light) - Grayscale with blue accents
10 * - calm: Calm Ops (Light) - Balanced blues and greens
11 * - neon: Neon Slate (Dark) - Dark with violet and cyan accents
12 * - obsidian: Obsidian Blue (Dark) - Deep blue dark theme
13 *
14 * Note: The "default" theme does not set a data-theme attribute,
15 * allowing WordPress to use its default admin styling.
16 */
17
18 /* ===== Default Theme: Monochrome Minimal (Light) ===== */
19 :root,
20 html:not([data-theme]),
21 html:not([data-theme]) body,
22 html[data-theme="mono"],
23 body[data-theme="mono"] {
24 --abj404-bg: #F8FAFC;
25 --abj404-bg-muted: #F5F7FA;
26 --abj404-surface: #ffffff;
27 --abj404-surface-hover: #F6F7F7; /* Light gray for hover */
28 --abj404-surface-muted: #F1F5F9;
29 --abj404-text: #111827;
30 --abj404-text-muted: #6B7280;
31 --abj404-border: #E5E7EB;
32 --abj404-primary: #374151;
33 --abj404-accent: #2563EB;
34 --abj404-info: #3B82F6;
35 --abj404-success: #10B981;
36 --abj404-warning: #F59E0B;
37 --abj404-danger: #EF4444;
38 --abj404-focus: #93C5FD;
39 --abj404-table-header: #F1F5F9;
40 --abj404-row-hover: #F5F7FA;
41 --abj404-row-selected: #DBEAFE;
42 --abj404-badge-bg: #EFF1F5;
43 --abj404-badge-text: #374151;
44 --abj404-link: var(--abj404-accent);
45 }
46
47 /* === Calm Ops (Light) === */
48 html[data-theme="calm"],
49 body[data-theme="calm"] {
50 --abj404-bg: #F7FAFD;
51 --abj404-bg-muted: #F1F6FE;
52 --abj404-surface: #ffffff;
53 --abj404-surface-hover: #F1F6FE; /* Light blue-gray for hover */
54 --abj404-surface-muted: #E9F0FB;
55 --abj404-text: #17223B;
56 --abj404-text-muted: #5A6B86;
57 --abj404-border: #E1E8F5;
58 --abj404-primary: #1E6BD6;
59 --abj404-accent: #00A27A;
60 --abj404-info: #2B8AE2;
61 --abj404-success: #20B67A;
62 --abj404-warning: #F6A700;
63 --abj404-danger: #D53F3F;
64 --abj404-focus: #5AA2FF;
65 --abj404-table-header: #E9F0FB;
66 --abj404-row-hover: #F1F6FE;
67 --abj404-row-selected: #D7E8FF;
68 --abj404-badge-bg: #EEF2F8;
69 --abj404-badge-text: #3E546E;
70 --abj404-link: var(--abj404-accent);
71 }
72
73 /* === Neon Slate (Dark) === */
74 html[data-theme="neon"],
75 body[data-theme="neon"] {
76 --abj404-bg: #0C0F13;
77 --abj404-bg-muted: #11151A;
78 --abj404-surface: #151A21;
79 --abj404-surface-hover: #1B222B; /* Slightly lighter than surface for hover */
80 --abj404-surface-muted: #1B222B;
81 --abj404-text: #DDE3EB; /* Reduced from #E5EAF2 to prevent halation */
82 --abj404-text-muted: #B4BFD0; /* Improved from #A6B0C3 for better contrast */
83 --abj404-border: #273141;
84 --abj404-primary: #7C3AED;
85 --abj404-accent: #22D3EE;
86 --abj404-info: #60A5FA;
87 --abj404-success: #34D399;
88 --abj404-warning: #F59E0B;
89 --abj404-danger: #F87171;
90 --abj404-focus: #38BDF8;
91 --abj404-table-header: #1F2732;
92 --abj404-row-hover: #192028;
93 --abj404-row-selected: #0E2936;
94 --abj404-badge-bg: #202734;
95 --abj404-badge-text: #D0D8E6; /* Reduced from #CFD8E6 for consistency */
96 --abj404-link: var(--abj404-accent);
97 --abj404-button-bg: #3D4A5C; /* Much brighter than surface for clear button visibility */
98 --abj404-button-border: #5A6B7F; /* Bright border for definition */
99 --abj404-button-hover-bg: #4A5A6E; /* Lighter hover state */
100 --abj404-button-text: #E8EDF3; /* Slightly brighter text for buttons */
101 }
102
103 /* === Obsidian Blue (Dark) === */
104 html[data-theme="obsidian"],
105 body[data-theme="obsidian"] {
106 --abj404-bg: #0A0F1A;
107 --abj404-bg-muted: #0E1522;
108 --abj404-surface: #121826;
109 --abj404-surface-hover: #172032; /* Slightly lighter than surface for hover */
110 --abj404-surface-muted: #172032;
111 --abj404-text: #DEE5F0; /* Reduced from #E6ECF7 to prevent halation */
112 --abj404-text-muted: #B8C4D8; /* Improved from #A9B7CC for better contrast */
113 --abj404-border: #223149;
114 --abj404-primary: #1D4ED8;
115 --abj404-accent: #A78BFA;
116 --abj404-info: #60A5FA;
117 --abj404-success: #22C55E;
118 --abj404-warning: #F59E0B;
119 --abj404-danger: #EF4444;
120 --abj404-focus: #93C5FD;
121 --abj404-table-header: #1B253A;
122 --abj404-row-hover: #141C2C;
123 --abj404-row-selected: #1A2A46;
124 --abj404-badge-bg: #1A2438;
125 --abj404-badge-text: #D5DEF0; /* Reduced from #DCE6F7 for consistency */
126 --abj404-link: #93C5FD;
127 --abj404-button-bg: #2D3F5C; /* Much brighter than surface for clear button visibility */
128 --abj404-button-border: #4A6085; /* Bright border for definition */
129 --abj404-button-hover-bg: #3A4F6E; /* Lighter hover state */
130 --abj404-button-text: #E8EFF7; /* Slightly brighter text for buttons */
131 }
132
133 /* ===== Mode Toggle Button Overrides ===== */
134 /* Exclude mode buttons from general button styles - they have their own distinct styling */
135 /* Non-active mode button - should look like a subtle link/tab */
136 html[data-theme] body.wp-admin .abj404-mode-btn:not(.active),
137 body[data-theme].wp-admin .abj404-mode-btn:not(.active),
138 html[data-theme] body .abj404-mode-btn:not(.active),
139 body[data-theme] .abj404-mode-btn:not(.active) {
140 background: transparent !important;
141 border: none !important;
142 box-shadow: none !important;
143 color: var(--abj404-text-muted) !important;
144 }
145
146 html[data-theme] body.wp-admin .abj404-mode-btn:not(.active):hover,
147 body[data-theme].wp-admin .abj404-mode-btn:not(.active):hover,
148 html[data-theme] body .abj404-mode-btn:not(.active):hover,
149 body[data-theme] .abj404-mode-btn:not(.active):hover {
150 background: var(--abj404-surface-muted) !important;
151 color: var(--abj404-text) !important;
152 transform: none !important;
153 }
154
155 /* Active mode button - should be prominent */
156 html[data-theme] body.wp-admin .abj404-mode-btn.active,
157 body[data-theme].wp-admin .abj404-mode-btn.active,
158 html[data-theme] body .abj404-mode-btn.active,
159 body[data-theme] .abj404-mode-btn.active {
160 background: var(--abj404-accent) !important;
161 border: none !important;
162 color: #fff !important;
163 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12) !important;
164 }
165
166 html[data-theme] body.wp-admin .abj404-mode-btn.active:hover,
167 body[data-theme].wp-admin .abj404-mode-btn.active:hover,
168 html[data-theme] body .abj404-mode-btn.active:hover,
169 body[data-theme] .abj404-mode-btn.active:hover {
170 opacity: 0.9 !important;
171 transform: none !important;
172 }
173
174 /* ===== Card Styling for Themes ===== */
175 /* Apply theme surface color to cards */
176 html[data-theme] body .abj404-card,
177 body[data-theme] .abj404-card {
178 background: var(--abj404-surface) !important;
179 border-color: var(--abj404-border) !important;
180 }
181
182 html[data-theme] body .abj404-card-header,
183 body[data-theme] .abj404-card-header {
184 border-bottom-color: var(--abj404-border) !important;
185 }
186
187 html[data-theme] body .abj404-card-header:hover,
188 body[data-theme] .abj404-card-header:hover {
189 background: var(--abj404-surface-hover) !important;
190 }
191
192 html[data-theme] body .abj404-card-title,
193 body[data-theme] .abj404-card-title {
194 color: var(--abj404-text) !important;
195 }
196
197 html[data-theme] body .abj404-card-content,
198 body[data-theme] .abj404-card-content {
199 color: var(--abj404-text) !important;
200 }
201
202 /* ===== Content Tab (Filter Links) Styling for Themes ===== */
203 /* Non-active content tabs - make text readable in dark mode */
204 html[data-theme] body .abj404-content-tab,
205 body[data-theme] .abj404-content-tab {
206 color: var(--abj404-text) !important;
207 }
208
209 html[data-theme] body .abj404-content-tab:hover,
210 body[data-theme] .abj404-content-tab:hover {
211 color: var(--abj404-accent) !important;
212 background: var(--abj404-surface-hover) !important;
213 }
214
215 html[data-theme] body .abj404-content-tab.active,
216 body[data-theme] .abj404-content-tab.active {
217 color: var(--abj404-accent) !important;
218 background: var(--abj404-surface) !important;
219 }
220
221 /* Tab count badges - make readable in dark mode */
222 html[data-theme] body .abj404-content-tab .abj404-tab-count,
223 body[data-theme] .abj404-content-tab .abj404-tab-count {
224 background: var(--abj404-badge-bg) !important;
225 color: var(--abj404-badge-text) !important;
226 }
227
228 html[data-theme] body .abj404-content-tab.active .abj404-tab-count,
229 body[data-theme] .abj404-content-tab.active .abj404-tab-count {
230 background: var(--abj404-accent) !important;
231 color: #fff !important;
232 }
233
234 /* ===== Logs Table Layout Improvements ===== */
235 /* Better column distribution for logs table */
236 .abj404-logs-table {
237 table-layout: fixed !important;
238 width: 100%;
239 }
240
241 /* URL column - most important, give it good width */
242 .abj404-logs-table th:nth-child(1),
243 .abj404-logs-table td:nth-child(1) {
244 width: 22%;
245 word-break: break-all;
246 }
247
248 /* IP Address column - fixed width for consistent display */
249 .abj404-logs-table th:nth-child(2),
250 .abj404-logs-table td:nth-child(2) {
251 width: 15%;
252 white-space: nowrap;
253 }
254
255 /* Referrer column - constrain with ellipsis */
256 .abj404-logs-table th:nth-child(3),
257 .abj404-logs-table td:nth-child(3) {
258 width: 28%;
259 max-width: 0;
260 overflow: hidden;
261 text-overflow: ellipsis;
262 white-space: nowrap;
263 }
264
265 /* Action column */
266 .abj404-logs-table th:nth-child(4),
267 .abj404-logs-table td:nth-child(4) {
268 width: 18%;
269 }
270
271 /* Date column */
272 .abj404-logs-table th:nth-child(5),
273 .abj404-logs-table td:nth-child(5) {
274 width: 12%;
275 white-space: nowrap;
276 }
277
278 /* User column */
279 .abj404-logs-table th:nth-child(6),
280 .abj404-logs-table td:nth-child(6) {
281 width: 5%;
282 }
283
284 /* Referrer links - full width with ellipsis */
285 .abj404-logs-table td:nth-child(3) a {
286 display: block;
287 overflow: hidden;
288 text-overflow: ellipsis;
289 white-space: nowrap;
290 }
291
292 /* ===== Apply theme colors to WordPress admin elements ===== */
293 /* Using high specificity selectors to avoid !important */
294 /* Note: Selectors check both html[data-theme] and body[data-theme] */
295 /* to support early theme application before body element is ready */
296
297 /* Background colors for WordPress admin wrapper elements */
298 html[data-theme] body.wp-admin #wpcontent,
299 body[data-theme].wp-admin #wpcontent,
300 html[data-theme] body.wp-admin #wpbody,
301 body[data-theme].wp-admin #wpbody,
302 html[data-theme] body.wp-admin #wpbody-content,
303 body[data-theme].wp-admin #wpbody-content {
304 background-color: var(--abj404-bg);
305 }
306
307 /* Body background color */
308 html[data-theme] body.wp-admin,
309 body[data-theme].wp-admin {
310 background-color: var(--abj404-bg) !important;
311 }
312
313 /* Background colors */
314 html[data-theme] body .wrap,
315 body[data-theme] .wrap,
316 html[data-theme] body.wp-admin #wpwrap .wrap,
317 body[data-theme].wp-admin #wpwrap .wrap {
318 background-color: var(--abj404-bg);
319 color: var(--abj404-text);
320 }
321
322 /* Page headings (like "404 Solution Options") */
323 html[data-theme] body .wrap h1,
324 html[data-theme] body .wrap h2,
325 html[data-theme] body .wrap > h1,
326 html[data-theme] body .wrap > h2,
327 body[data-theme] .wrap h1,
328 body[data-theme] .wrap h2,
329 body[data-theme] .wrap > h1,
330 body[data-theme] .wrap > h2 {
331 color: var(--abj404-text);
332 }
333
334 /* Post boxes (the main content containers) */
335 html[data-theme] body .postbox,
336 html[data-theme] body .postbox-container .metabox-holder .postbox,
337 body[data-theme] .postbox,
338 body[data-theme] .postbox-container .metabox-holder .postbox {
339 background-color: var(--abj404-surface);
340 border-color: var(--abj404-border);
341 color: var(--abj404-text);
342 }
343
344 html[data-theme] body .postbox .inside,
345 body[data-theme] .postbox .inside {
346 background-color: var(--abj404-surface);
347 color: var(--abj404-text);
348 }
349
350 /* Postbox headers */
351 html[data-theme] body .postbox h2,
352 html[data-theme] body .postbox h3,
353 html[data-theme] body .postbox .hndle,
354 html[data-theme] body .hndle,
355 body[data-theme] .postbox h2,
356 body[data-theme] .postbox h3,
357 body[data-theme] .postbox .hndle,
358 body[data-theme] .hndle {
359 background-color: var(--abj404-surface-muted);
360 border-bottom-color: var(--abj404-border);
361 color: var(--abj404-text);
362 }
363
364 /* Tables */
365 body[data-theme] table.wp-list-table,
366 body[data-theme] .widefat {
367 background-color: var(--abj404-surface);
368 border-color: var(--abj404-border);
369 color: var(--abj404-text);
370 }
371
372 body[data-theme] table.wp-list-table thead th,
373 body[data-theme] .widefat thead th,
374 body[data-theme] table.wp-list-table tfoot th,
375 body[data-theme] .widefat tfoot th {
376 background-color: var(--abj404-table-header);
377 border-color: var(--abj404-border);
378 color: var(--abj404-text);
379 }
380
381 body[data-theme] table.wp-list-table tbody tr,
382 body[data-theme] .widefat tbody tr {
383 background-color: var(--abj404-surface);
384 border-color: var(--abj404-border);
385 }
386
387 body[data-theme] table.wp-list-table tbody tr:hover,
388 body[data-theme] .widefat tbody tr:hover {
389 background-color: var(--abj404-row-hover);
390 }
391
392 body[data-theme] table.wp-list-table tbody tr.selected,
393 body[data-theme] .widefat tbody tr.selected {
394 background-color: var(--abj404-row-selected);
395 }
396
397 body[data-theme] table.wp-list-table tbody td,
398 body[data-theme] .widefat tbody td {
399 border-color: var(--abj404-border);
400 color: var(--abj404-text);
401 }
402
403 /* Form elements */
404 html[data-theme] body.wp-admin input[type="text"],
405 html[data-theme] body.wp-admin input[type="number"],
406 html[data-theme] body.wp-admin input[type="email"],
407 html[data-theme] body.wp-admin input[type="password"],
408 html[data-theme] body.wp-admin input[type="search"],
409 html[data-theme] body.wp-admin textarea,
410 html[data-theme] body.wp-admin select,
411 body[data-theme].wp-admin input[type="text"],
412 body[data-theme].wp-admin input[type="number"],
413 body[data-theme].wp-admin input[type="email"],
414 body[data-theme].wp-admin input[type="password"],
415 body[data-theme].wp-admin input[type="search"],
416 body[data-theme].wp-admin textarea,
417 body[data-theme].wp-admin select,
418 html[data-theme] body input[type="text"],
419 html[data-theme] body input[type="number"],
420 html[data-theme] body input[type="email"],
421 html[data-theme] body input[type="password"],
422 html[data-theme] body input[type="search"],
423 html[data-theme] body textarea,
424 html[data-theme] body select,
425 body[data-theme] input[type="text"],
426 body[data-theme] input[type="number"],
427 body[data-theme] input[type="email"],
428 body[data-theme] input[type="password"],
429 body[data-theme] input[type="search"],
430 body[data-theme] textarea,
431 body[data-theme] select {
432 background-color: var(--abj404-surface) !important;
433 border-color: var(--abj404-border) !important;
434 color: var(--abj404-text) !important;
435 border-radius: 4px !important;
436 }
437
438 html[data-theme] body.wp-admin input[type="text"]:focus,
439 html[data-theme] body.wp-admin input[type="number"]:focus,
440 html[data-theme] body.wp-admin input[type="email"]:focus,
441 html[data-theme] body.wp-admin input[type="password"]:focus,
442 html[data-theme] body.wp-admin input[type="search"]:focus,
443 html[data-theme] body.wp-admin textarea:focus,
444 html[data-theme] body.wp-admin select:focus,
445 body[data-theme].wp-admin input[type="text"]:focus,
446 body[data-theme].wp-admin input[type="number"]:focus,
447 body[data-theme].wp-admin input[type="email"]:focus,
448 body[data-theme].wp-admin input[type="password"]:focus,
449 body[data-theme].wp-admin input[type="search"]:focus,
450 body[data-theme].wp-admin textarea:focus,
451 body[data-theme].wp-admin select:focus,
452 html[data-theme] body input[type="text"]:focus,
453 html[data-theme] body input[type="number"]:focus,
454 html[data-theme] body input[type="email"]:focus,
455 html[data-theme] body input[type="password"]:focus,
456 html[data-theme] body input[type="search"]:focus,
457 html[data-theme] body textarea:focus,
458 html[data-theme] body select:focus,
459 body[data-theme] input[type="text"]:focus,
460 body[data-theme] input[type="number"]:focus,
461 body[data-theme] input[type="email"]:focus,
462 body[data-theme] input[type="password"]:focus,
463 body[data-theme] input[type="search"]:focus,
464 body[data-theme] textarea:focus,
465 body[data-theme] select:focus {
466 border-color: var(--abj404-focus) !important;
467 outline-color: var(--abj404-focus) !important;
468 }
469
470 /* Select dropdown options */
471 html[data-theme] body.wp-admin select option,
472 body[data-theme].wp-admin select option,
473 html[data-theme] body select option,
474 body[data-theme] select option {
475 background-color: var(--abj404-surface) !important;
476 color: var(--abj404-text) !important;
477 }
478
479 /* jQuery UI Autocomplete dropdown */
480 html[data-theme] .ui-autocomplete,
481 body[data-theme] .ui-autocomplete,
482 html[data-theme] .ui-menu,
483 body[data-theme] .ui-menu {
484 background-color: var(--abj404-surface) !important;
485 border-color: var(--abj404-border) !important;
486 color: var(--abj404-text) !important;
487 }
488
489 html[data-theme] .ui-autocomplete .ui-menu-item,
490 body[data-theme] .ui-autocomplete .ui-menu-item,
491 html[data-theme] .ui-menu .ui-menu-item,
492 body[data-theme] .ui-menu .ui-menu-item {
493 background-color: var(--abj404-surface) !important;
494 color: var(--abj404-text) !important;
495 }
496
497 html[data-theme] .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper,
498 body[data-theme] .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper,
499 html[data-theme] .ui-menu .ui-menu-item .ui-menu-item-wrapper,
500 body[data-theme] .ui-menu .ui-menu-item .ui-menu-item-wrapper {
501 color: var(--abj404-text) !important;
502 }
503
504 html[data-theme] .ui-autocomplete .ui-menu-item:hover,
505 body[data-theme] .ui-autocomplete .ui-menu-item:hover,
506 html[data-theme] .ui-menu .ui-menu-item:hover,
507 body[data-theme] .ui-menu .ui-menu-item:hover,
508 html[data-theme] .ui-autocomplete .ui-state-active,
509 body[data-theme] .ui-autocomplete .ui-state-active,
510 html[data-theme] .ui-autocomplete .ui-state-focus,
511 body[data-theme] .ui-autocomplete .ui-state-focus {
512 background-color: var(--abj404-surface-muted) !important;
513 color: var(--abj404-text) !important;
514 border-color: var(--abj404-primary) !important;
515 }
516
517 html[data-theme] .ui-autocomplete .ui-menu-item-wrapper.ui-state-active,
518 body[data-theme] .ui-autocomplete .ui-menu-item-wrapper.ui-state-active {
519 background-color: var(--abj404-primary) !important;
520 color: #ffffff !important;
521 }
522
523 /* Autocomplete category headers */
524 html[data-theme] .ui-autocomplete-category,
525 body[data-theme] .ui-autocomplete-category {
526 background-color: var(--abj404-surface-muted) !important;
527 color: var(--abj404-text-muted) !important;
528 font-weight: bold;
529 padding: 4px 8px;
530 }
531
532 /* Buttons */
533 /* High specificity selectors to override WordPress defaults */
534 html[data-theme] body.wp-admin button,
535 html[data-theme] body.wp-admin input[type="button"],
536 html[data-theme] body.wp-admin input[type="submit"],
537 html[data-theme] body.wp-admin input[type="reset"],
538 body[data-theme].wp-admin button,
539 body[data-theme].wp-admin input[type="button"],
540 body[data-theme].wp-admin input[type="submit"],
541 body[data-theme].wp-admin input[type="reset"],
542 html[data-theme] body .button,
543 html[data-theme] body .button-secondary,
544 body[data-theme] .button,
545 body[data-theme] .button-secondary {
546 background-color: var(--abj404-button-bg, var(--abj404-surface)) !important;
547 border-color: var(--abj404-button-border, var(--abj404-border)) !important;
548 color: var(--abj404-button-text, var(--abj404-text)) !important;
549 border-radius: 8px !important;
550 border-style: solid !important;
551 border-width: 1px !important;
552 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3) !important;
553 }
554
555 html[data-theme] body.wp-admin button:hover,
556 html[data-theme] body.wp-admin input[type="button"]:hover,
557 html[data-theme] body.wp-admin input[type="submit"]:hover,
558 html[data-theme] body.wp-admin input[type="reset"]:hover,
559 body[data-theme].wp-admin button:hover,
560 body[data-theme].wp-admin input[type="button"]:hover,
561 body[data-theme].wp-admin input[type="submit"]:hover,
562 body[data-theme].wp-admin input[type="reset"]:hover,
563 html[data-theme] body .button:hover,
564 html[data-theme] body .button-secondary:hover,
565 body[data-theme] .button:hover,
566 body[data-theme] .button-secondary:hover {
567 background-color: var(--abj404-button-hover-bg, var(--abj404-surface-muted)) !important;
568 border-color: var(--abj404-primary) !important;
569 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 2px 5px rgba(0, 0, 0, 0.4) !important;
570 transform: translateY(-1px);
571 }
572
573 html[data-theme] body .button-primary,
574 body[data-theme] .button-primary,
575 html[data-theme] body input[type="submit"].button-primary,
576 body[data-theme] input[type="submit"].button-primary {
577 background-color: var(--abj404-primary) !important;
578 border-color: var(--abj404-primary) !important;
579 color: #ffffff !important;
580 border-radius: 8px !important;
581 }
582
583 html[data-theme] body .button-primary:hover,
584 body[data-theme] .button-primary:hover,
585 html[data-theme] body input[type="submit"].button-primary:hover,
586 body[data-theme] input[type="submit"].button-primary:hover {
587 opacity: 0.9;
588 }
589
590 /* Links */
591 body[data-theme] a {
592 color: var(--abj404-link);
593 }
594
595 body[data-theme] a:hover {
596 color: var(--abj404-accent);
597 }
598
599 /* Navigation tabs */
600 body[data-theme] .nav-tab-wrapper,
601 body[data-theme] .wrap .nav-tab-wrapper {
602 background-color: var(--abj404-bg);
603 border-bottom-color: var(--abj404-border);
604 }
605
606 body[data-theme] .nav-tab,
607 body[data-theme] a.nav-tab {
608 background-color: var(--abj404-surface);
609 border-color: var(--abj404-border);
610 color: var(--abj404-text);
611 }
612
613 body[data-theme] .nav-tab:hover,
614 body[data-theme] a.nav-tab:hover {
615 background-color: var(--abj404-surface-muted);
616 color: var(--abj404-text);
617 }
618
619 body[data-theme] .nav-tab-active,
620 body[data-theme] .nav-tab-active:hover,
621 body[data-theme] a.nav-tab-active,
622 body[data-theme] a.nav-tab-active:hover {
623 background-color: var(--abj404-bg);
624 border-bottom-color: var(--abj404-bg);
625 color: var(--abj404-text);
626 }
627
628 /* Filter navigation (All, Manual Redirects, etc.) */
629 html[data-theme] body.wp-admin .subsubsub a,
630 body[data-theme].wp-admin .subsubsub a,
631 html[data-theme] body .subsubsub a,
632 body[data-theme] .subsubsub a {
633 color: var(--abj404-link) !important;
634 }
635
636 html[data-theme] body.wp-admin .subsubsub a:hover,
637 body[data-theme].wp-admin .subsubsub a:hover,
638 html[data-theme] body .subsubsub a:hover,
639 body[data-theme] .subsubsub a:hover {
640 color: var(--abj404-link-hover) !important;
641 }
642
643 html[data-theme] body.wp-admin .subsubsub a.current,
644 body[data-theme].wp-admin .subsubsub a.current,
645 html[data-theme] body .subsubsub a.current,
646 body[data-theme] .subsubsub a.current {
647 color: var(--abj404-text) !important;
648 font-weight: 600;
649 }
650
651 /* Notices and messages */
652 body[data-theme] .notice,
653 body[data-theme] .updated,
654 body[data-theme] .error {
655 background-color: var(--abj404-surface);
656 border-left-color: var(--abj404-info);
657 color: var(--abj404-text);
658 }
659
660 body[data-theme] .notice.notice-success,
661 body[data-theme] .updated {
662 border-left-color: var(--abj404-success);
663 }
664
665 body[data-theme] .notice.notice-warning {
666 border-left-color: var(--abj404-warning);
667 }
668
669 body[data-theme] .notice.notice-error,
670 body[data-theme] .error {
671 border-left-color: var(--abj404-danger);
672 }
673
674 /* Pagination */
675 body[data-theme] .tablenav,
676 body[data-theme] .tablenav-pages {
677 background-color: var(--abj404-surface);
678 color: var(--abj404-text);
679 }
680
681 body[data-theme] .tablenav .tablenav-pages a {
682 background-color: var(--abj404-surface);
683 border-color: var(--abj404-border);
684 color: var(--abj404-link);
685 }
686
687 /* Muted text */
688 body[data-theme] .description,
689 body[data-theme] .form-text,
690 body[data-theme] p.description {
691 color: var(--abj404-text-muted);
692 }
693
694 /* File input styling */
695 html[data-theme] body.wp-admin input[type="file"],
696 body[data-theme].wp-admin input[type="file"],
697 html[data-theme] body input[type="file"],
698 body[data-theme] input[type="file"] {
699 background-color: var(--abj404-surface) !important;
700 border: 1px solid var(--abj404-border) !important;
701 border-radius: 8px !important;
702 color: var(--abj404-text) !important;
703 padding: 6px 12px !important;
704 }
705
706 html[data-theme] body.wp-admin input[type="file"]::-webkit-file-upload-button,
707 body[data-theme].wp-admin input[type="file"]::-webkit-file-upload-button,
708 html[data-theme] body input[type="file"]::-webkit-file-upload-button,
709 body[data-theme] input[type="file"]::-webkit-file-upload-button {
710 background-color: var(--abj404-surface-muted) !important;
711 border: 1px solid var(--abj404-border) !important;
712 border-radius: 6px !important;
713 color: var(--abj404-text) !important;
714 padding: 6px 12px !important;
715 margin-right: 12px !important;
716 cursor: pointer !important;
717 }
718
719 html[data-theme] body.wp-admin input[type="file"]::-webkit-file-upload-button:hover,
720 body[data-theme].wp-admin input[type="file"]::-webkit-file-upload-button:hover,
721 html[data-theme] body input[type="file"]::-webkit-file-upload-button:hover,
722 body[data-theme] input[type="file"]::-webkit-file-upload-button:hover {
723 background-color: var(--abj404-primary) !important;
724 border-color: var(--abj404-primary) !important;
725 color: #ffffff !important;
726 }
727
728 /* Chips navigation - preserve scroll spy functionality */
729 /* Override general button styles for chips to maintain their distinct states */
730 html[data-theme] body.wp-admin .abj404-chip,
731 body[data-theme].wp-admin .abj404-chip,
732 html[data-theme] body .abj404-chip,
733 body[data-theme] .abj404-chip {
734 background-color: var(--abj404-surface) !important;
735 border-color: var(--abj404-border) !important;
736 color: var(--abj404-text) !important;
737 border-radius: 8px !important;
738 opacity: 0.5;
739 }
740
741 html[data-theme] body.wp-admin .abj404-chip:hover,
742 body[data-theme].wp-admin .abj404-chip:hover,
743 html[data-theme] body .abj404-chip:hover,
744 body[data-theme] .abj404-chip:hover {
745 background-color: var(--abj404-surface-muted) !important;
746 border-color: var(--abj404-text-muted) !important;
747 opacity: 0.7;
748 }
749
750 /* Section visible (pressed/shown) */
751 html[data-theme] body.wp-admin .abj404-chip[aria-pressed="true"],
752 body[data-theme].wp-admin .abj404-chip[aria-pressed="true"],
753 html[data-theme] body .abj404-chip[aria-pressed="true"],
754 body[data-theme] .abj404-chip[aria-pressed="true"] {
755 background-color: var(--abj404-bg-muted) !important;
756 border-color: var(--abj404-accent) !important;
757 box-shadow: inset 0 0 0 1px currentColor !important;
758 opacity: 0.9;
759 }
760
761 /* Section currently in viewport - Scroll Spy Active State */
762 html[data-theme] body.wp-admin .abj404-chip.active,
763 body[data-theme].wp-admin .abj404-chip.active,
764 html[data-theme] body .abj404-chip.active,
765 body[data-theme] .abj404-chip.active {
766 background-color: var(--abj404-accent) !important;
767 border-color: var(--abj404-accent) !important;
768 color: #fff !important;
769 font-weight: 600 !important;
770 box-shadow: 0 2px 8px rgba(34, 113, 177, 0.3) !important;
771 opacity: 1 !important;
772 transform: scale(1.05) !important;
773 }
774
775 html[data-theme] body.wp-admin .abj404-chip.active:hover,
776 body[data-theme].wp-admin .abj404-chip.active:hover,
777 html[data-theme] body .abj404-chip.active:hover,
778 body[data-theme] .abj404-chip.active:hover {
779 background-color: var(--abj404-accent) !important;
780 box-shadow: 0 3px 12px rgba(34, 113, 177, 0.4) !important;
781 }
782
783 /* Active chip - make dot brighter/white */
784 html[data-theme] body.wp-admin .abj404-chip.active .abj404-chip-dot,
785 body[data-theme].wp-admin .abj404-chip.active .abj404-chip-dot,
786 html[data-theme] body .abj404-chip.active .abj404-chip-dot,
787 body[data-theme] .abj404-chip.active .abj404-chip-dot {
788 background: #fff !important;
789 box-shadow: 0 0 6px rgba(255, 255, 255, 0.6) !important;
790 }
791
792 /* Special styling for dark themes */
793 body[data-theme="neon"] .postbox,
794 body[data-theme="obsidian"] .postbox {
795 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
796 }
797
798 html[data-theme="neon"] input[type="checkbox"],
799 html[data-theme="neon"] input[type="radio"],
800 html[data-theme="obsidian"] input[type="checkbox"],
801 html[data-theme="obsidian"] input[type="radio"] {
802 filter: invert(1) hue-rotate(180deg);
803 }
804
805 /* ===== Typography optimizations for dark themes ===== */
806 /* Improve readability by adjusting font rendering and weights for dark backgrounds */
807
808 /* Font smoothing for crisper text rendering on dark backgrounds */
809 body[data-theme="neon"],
810 body[data-theme="obsidian"] {
811 -webkit-font-smoothing: antialiased;
812 -moz-osx-font-smoothing: grayscale;
813 text-rendering: optimizeLegibility;
814 }
815
816 /* Reduce font weight on dark backgrounds (text appears heavier on dark) */
817 body[data-theme="neon"] .postbox,
818 body[data-theme="neon"] .postbox .inside,
819 body[data-theme="neon"] p,
820 body[data-theme="neon"] td,
821 body[data-theme="neon"] th,
822 body[data-theme="neon"] label,
823 body[data-theme="obsidian"] .postbox,
824 body[data-theme="obsidian"] .postbox .inside,
825 body[data-theme="obsidian"] p,
826 body[data-theme="obsidian"] td,
827 body[data-theme="obsidian"] th,
828 body[data-theme="obsidian"] label {
829 font-weight: 400;
830 }
831
832 /* Adjust bold/strong elements to use medium weight instead of bold */
833 body[data-theme="neon"] strong,
834 body[data-theme="neon"] b,
835 body[data-theme="neon"] .button-primary,
836 body[data-theme="obsidian"] strong,
837 body[data-theme="obsidian"] b,
838 body[data-theme="obsidian"] .button-primary {
839 font-weight: 500;
840 }
841
842 /* Increase line height for better readability in body text */
843 body[data-theme="neon"] .postbox .inside,
844 body[data-theme="neon"] .form-text,
845 body[data-theme="neon"] .description,
846 body[data-theme="neon"] p.description,
847 body[data-theme="obsidian"] .postbox .inside,
848 body[data-theme="obsidian"] .form-text,
849 body[data-theme="obsidian"] .description,
850 body[data-theme="obsidian"] p.description {
851 line-height: 1.6;
852 }
853
854 /* Improve table readability with better spacing */
855 body[data-theme="neon"] table.wp-list-table tbody td,
856 body[data-theme="neon"] .widefat tbody td,
857 body[data-theme="obsidian"] table.wp-list-table tbody td,
858 body[data-theme="obsidian"] .widefat tbody td {
859 padding-top: 12px;
860 padding-bottom: 12px;
861 line-height: 1.5;
862 }
863
864 /* ===== Loading Overlay for Dark Themes ===== */
865 /* Override the white loading overlay with a dark semi-transparent background */
866 html[data-theme="neon"] .abj404-loading-overlay,
867 body[data-theme="neon"] .abj404-loading-overlay,
868 html[data-theme="obsidian"] .abj404-loading-overlay,
869 body[data-theme="obsidian"] .abj404-loading-overlay {
870 background: rgba(12, 15, 19, 0.8) !important;
871 }
872