/** * Front-end styles for the 404 suggestions block: the loading skeleton shown * while suggestions are being computed, and the admin-only note rendered * below the finished list. * * Kept as one stylesheet, under its original filename, because both live * inside the same block and the async path already loads it before the AJAX * response arrives -- an AJAX response cannot enqueue anything, so the admin * note has to be styled by a sheet that is already on the page. * * This stylesheet is enqueued by the [abj404] shortcode on the user-facing * (front-end) site. The plugin's admin theme variables (--abj404-*) defined * in adminThemes.css are admin-only and are NOT available here, so the * skeleton/text colors below must remain literal. The values are designed to * read neutrally on any host theme (light + dark via prefers-color-scheme). */ /* Container for loading state */ .abj404-loading { list-style: none; padding: 0; margin: 0; } /* Individual skeleton item */ .abj404-skeleton { /* allow-hardcoded-color: frontend shortcode CSS; admin theme vars are not loaded on the user site, and skeleton shimmer must read on any host theme. */ background: linear-gradient(90deg, #f0f0f0 25%, #e8e8e8 50%, #f0f0f0 75%); background-size: 200% 100%; animation: abj404-shimmer 1.5s infinite; height: 20px; margin: 10px 0; border-radius: 4px; list-style: none; } /* Vary widths for more natural look */ .abj404-skeleton:nth-child(1) { width: 85%; } .abj404-skeleton:nth-child(2) { width: 70%; } .abj404-skeleton:nth-child(3) { width: 90%; } .abj404-skeleton:nth-child(4) { width: 75%; } .abj404-skeleton:nth-child(5) { width: 80%; } .abj404-skeleton:nth-child(n+6) { width: 78%; } /* Shimmer animation */ @keyframes abj404-shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* Loading text message */ .abj404-loading-text { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; mid-gray reads on light host themes. */ color: #666; font-style: italic; margin: 5px 0 10px; font-size: 0.95em; } /* No suggestions fallback message */ .abj404-no-suggestions { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; mid-gray reads on light host themes. */ color: #666; font-style: italic; list-style: none; padding: 10px 0; } /* Dark mode support */ @media (prefers-color-scheme: dark) { .abj404-skeleton { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; dark-mode shimmer tuned for dark host themes. */ background: linear-gradient(90deg, #2a2a2a 25%, #333333 50%, #2a2a2a 75%); background-size: 200% 100%; } .abj404-loading-text { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; light gray reads on dark host themes. */ color: #aaa; } .abj404-no-suggestions { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; light gray reads on dark host themes. */ color: #aaa; } } /* --------------------------------------------------------------------------- * Admin-only note below the suggestion list. Deliberately quiet: no box, no * colour fill, no icon. A hairline rule on the left and small grey text, so * it reads as an aside on someone else's theme rather than as plugin chrome. * ------------------------------------------------------------------------ */ .abj404-admin-note { font-size: 13px; line-height: 1.5; /* allow-hardcoded-color: frontend shortcode CSS; admin theme vars are not loaded on the user site, and this grey has to read on any host theme. */ color: #646970; margin: 10px 0 0; padding-left: 10px; /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; matches the WordPress admin hairline grey. */ border-left: 3px solid #dcdcde; } .abj404-admin-note a { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; WordPress admin link blue, readable on light host themes. */ color: #2271b1; } @media (prefers-color-scheme: dark) { .abj404-admin-note { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; light grey reads on dark host themes. */ color: #a7aaad; /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; dark-mode hairline. */ border-left-color: #4f5255; } .abj404-admin-note a { /* allow-hardcoded-color: frontend shortcode CSS, theme vars unavailable; WordPress admin light-blue link for dark backgrounds. */ color: #72aee6; } }