/* Theme variables — every other sheet here reads them. */ /* Split out of admin.css (#533). Loaded from admin.css in a fixed order — later sheets override earlier ones, so the order there is the cascade. */ /* ── Theme Variables ───────────────────────────────────────── */ /* .admin-listbox-popup is listed alongside .admin-layout because it is portalled to , outside the layout subtree. Without its own copy every var below resolves to nothing there, and the popup paints transparent. */ .admin-layout, .admin-listbox-popup { /* Dark mode (default) */ --admin-bg: #111111; --admin-bg-raised: #1a1a1a; --admin-bg-elevated: #222222; --admin-bg-input: #161616; --admin-border: #2e2e2e; --admin-border-hover: #444444; --admin-border-focus: #777777; --admin-text: #f0f0f0; --admin-text-secondary: #a0a0a0; /* ≥4.6:1 on every admin surface (#0c0c0c–#222222); #707070 fell to 3.2:1. */ --admin-text-muted: #8a8a8a; /* Not amber: that is --admin-warning, and with both the same every active marker and focus ring read as a warning. 7.7:1 on the background. */ --admin-accent: #60a5fa; /* Text on an accent fill (counts, badges). */ --admin-on-accent: #000000; /* Focus used to show only as a border colour change from #2e2e2e to #666666, a contrast of 2.37:1 where WCAG 1.4.11 asks for 3:1 against adjacent colours, so keyboard users could barely see where they were. The border value now clears 3:1, and a real ring comes on top: the accent sits at 8.8:1 on the dark background. */ --admin-focus-ring: 2px solid var(--admin-accent); /* One height for every control in the header row. */ --admin-control-height: 36px; --admin-success: #4ade80; /* Warnings get their own token rather than the accent: a preset may recolour the accent (studio-modern makes it red), and a warning must not read as an error because of the theme. */ --admin-warning: #f59e0b; --admin-error: #f87171; --admin-error-bg: #2d1111; --admin-error-border: #5c2020; --admin-btn-primary-bg: #ffffff; --admin-btn-primary-text: #000000; --admin-btn-primary-hover: #e5e5e5; --admin-overlay: rgba(0, 0, 0, 0.7); } [data-theme='light'] .admin-layout, [data-theme='light'] .admin-listbox-popup { --admin-bg: #f8f8f8; --admin-bg-raised: #ffffff; --admin-bg-elevated: #f0f0f0; --admin-bg-input: #ffffff; --admin-border: #e0e0e0; --admin-border-hover: #c0c0c0; --admin-border-focus: #7f7f7f; --admin-text: #1a1a1a; --admin-text-secondary: #555555; /* ≥4.6:1 on white and on #efefee; #888888 was 3.1–3.5:1. */ --admin-text-muted: #6b6b6b; --admin-accent: #2563eb; --admin-on-accent: #ffffff; --admin-success: #16a34a; --admin-warning: #b45309; --admin-error: #dc2626; --admin-error-bg: #fef2f2; --admin-error-border: #fecaca; --admin-btn-primary-bg: #1a1a1a; --admin-btn-primary-text: #ffffff; --admin-btn-primary-hover: #333333; --admin-overlay: rgba(0, 0, 0, 0.4); } /* studio-modern restyles the admin in its preset file with a red accent and warm greys. Two of its values are corrected here, one step more specific (html) so the order the sheets load in does not matter: its muted text (#6b6b66 dark, #8a8a84 light) sat at 3.0–3.6:1, and text on its red reads better white (4.8:1) than black (4.4:1). */ html[data-preset='studio-modern'] .admin-layout { --admin-text-muted: #8c8c86; --admin-on-accent: #ffffff; } html[data-preset='studio-modern'][data-theme='light'] .admin-layout { --admin-text-muted: #6b6b66; } .admin-layout { min-height: 100vh; background: var(--admin-bg); color: var(--admin-text); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; }