
/* Text-visibility safety net — high-specificity color overrides (light + dark)

   CONTRACT (2026-08-27, docs/UX_INVARIANTS.md): the gradient escape hatch
   below resets headings to inherit. If a gradient SECTION does not set an
   inline color, inherit walks up to the near-black body ink and the headline
   vanishes on a dark band (this deleted the Conductor headline). Every
   dark-by-design section MUST therefore carry an inline color on the
   section element itself. Do NOT fix this by defaulting gradient headings
   to light here — the linear-gradient attribute selector also matches LIGHT
   inline gradients (the beige hp-craft band), which a light default would
   break the same way in reverse. Per-section enforcement lives in
   aict-contrast-fixes-2026.css (loads last). NOTE: this block is a
   single-quoted PHP string — no apostrophes in comments. */
[class*="aict"] h1,[class*="aict"] h2,[class*="aict"] h3,
.aict-tool-card h3,.aict-tool-card .aict-tool-name,
.aict-tool-page .aict-tool-title,.aict-tool-page h1,
.aict-blog-hub h1,.aict-blog-post h1,.aict-section h2,
.aict-prompts h1,.aict-prompt-cat h2{
color:#0B1B35!important;-webkit-text-fill-color:#0B1B35!important;
background:none!important;-webkit-background-clip:unset!important;
background-clip:unset!important;opacity:1!important}
[class*="aict"] p,[class*="aict"] li,.aict-tool-page .aict-tool-description,
.aict-steps li,.aict-tool-card p{
color:#334155!important;-webkit-text-fill-color:#334155!important;opacity:1!important}
/* White text ON dark backgrounds (hero, agents, CTA sections) */
[style*="background:linear-gradient"] h1,
[style*="background:linear-gradient"] h2,
[style*="background:linear-gradient"] p,
[style*="background:#0f172a"] h2,
[style*="background:#0f172a"] p,
[style*="color:#fff"] h1,[style*="color:#fff"] h2{
color:inherit!important;-webkit-text-fill-color:inherit!important}
/* [2026-06-07 UX audit] Class-based dark hero/section containers — the bg is set
   in a <style> block, not an inline style attr, so the [style*=...] exceptions
   above miss them and the broad [class*="aict"] h1 force-darkens them invisible.
   Higher specificity (0,2,1) + later source wins over the (0,1,1) safety net. */
.aict-cat-landing h1,.aict-cat-landing h2,.aict-cat-landing-header h1{
color:#ffffff!important;-webkit-text-fill-color:#ffffff!important;
background:none!important;-webkit-background-clip:unset!important;background-clip:unset!important}
.aict-cat-landing .cat-desc,.aict-cat-landing .aict-breadcrumb,.aict-cat-landing .aict-breadcrumb a{
color:#cbd5e1!important;-webkit-text-fill-color:#cbd5e1!important}
.aict-cat-landing .aict-breadcrumb span{color:#e2e8f0!important;-webkit-text-fill-color:#e2e8f0!important}
/* [2026-06-07 UX audit] Dark INLINE-bg cards (persona pages, starter-pack, any
   box with style="background:#1e293b|#0f172a") carry inline #fff headings + light
   text, but the broad [class*="aict"] h1/h2/h3 + p safety nets above force them to
   #0B1B35/#334155 -> invisible on the dark card. Restore light. The [style*=...] h2
   (0,1,1) ties the safety net (0,1,1) but wins on later source order in this block. */
[style*="background:#1e293b"] h1,[style*="background:#1e293b"] h2,[style*="background:#1e293b"] h3,[style*="background:#1e293b"] h4,
[style*="background: #1e293b"] h2,[style*="background: #1e293b"] h3,[style*="background: #1e293b"] h4,
[style*="background:#0f172a"] h1,[style*="background:#0f172a"] h2,[style*="background:#0f172a"] h3,[style*="background:#0f172a"] h4{
color:#ffffff!important;-webkit-text-fill-color:#ffffff!important;
background:none!important;-webkit-background-clip:unset!important;background-clip:unset!important}
[style*="background:#1e293b"] p,[style*="background: #1e293b"] p,[style*="background:#0f172a"] p,
[style*="background:#1e293b"] li,[style*="background: #1e293b"] li,[style*="background:#0f172a"] li{
color:#cbd5e1!important;-webkit-text-fill-color:#cbd5e1!important}
/* prefers-color-scheme:dark removed — was forcing light text on white sections.
   Dark mode is handled by [data-theme="dark"] selectors below. */
[data-theme="dark"] [class*="aict"] h1,
[data-theme="dark"] [class*="aict"] h2,
[data-theme="dark"] [class*="aict"] h3,
[data-theme="dark"] .aict-tool-card h3,
[data-theme="dark"] .aict-tool-page .aict-tool-title,
[data-theme="dark"] .aict-tool-page h1,
[data-theme="dark"] .aict-blog-hub h1,
[data-theme="dark"] .aict-blog-post h1,
[data-theme="dark"] .aict-section h2,
[data-theme="dark"] .aict-prompts h1,
[data-theme="dark"] .aict-prompt-cat h2{
color:#f1f5f9!important;-webkit-text-fill-color:#f1f5f9!important;
background:none!important;-webkit-background-clip:unset!important;
background-clip:unset!important;opacity:1!important}
[data-theme="dark"] [class*="aict"] p,
[data-theme="dark"] [class*="aict"] li,
[data-theme="dark"] .aict-tool-page .aict-tool-description,
[data-theme="dark"] .aict-steps li,
[data-theme="dark"] .aict-tool-card p{
color:#cbd5e1!important;-webkit-text-fill-color:#cbd5e1!important;opacity:1!important}
/* [v4.16.80bb 2026-04-29] Wave SSS root cause — REMOVED the
   @media (prefers-color-scheme: dark) block that forced light heading
   text on light-mode pages whenever the OS preferred dark. We honor
   only the explicit toggle (data-theme="dark") via the rules above
   (lines 3446-3465) and dark-mode-v11.css. The OS-pref mirror block
   leaked into the onboarding modal, hero h1, and trust strip text on
   light pages, making them slate-100 on white. */
