/* Campaign AA contrast repair. Host page only; original games remain untouched. */
.hero { background: linear-gradient(180deg, #DBEAFE 0%, #FFFFFF 100%); }
.hero .eyebrow-orange, #road .eyebrow, #road .press-start,
#impact .eyebrow-pink, #arcade .founder-copy .eyebrow,
#arcade .founder-photo figcaption, #dream .dream-copy > .eyebrow {
  color: #0F1B4D;
}
/* Requested arcade-style headline blink; keep reduced-motion static. */
.hero .high-score-blink { color: #E8441A; animation: arcade-score-blink 0.8s steps(1,end) infinite; opacity: 1; }
@keyframes arcade-score-blink { 0%,84%,100% { opacity:1; } 85%,99% { opacity:0; } }
@media (prefers-reduced-motion: reduce) { .hero .high-score-blink { animation:none; opacity:1; } }
/* Neither navy nor white small type passes on orange. Keep orange decoration,
   but give the label a yellow face with navy lettering. */
#road .rs-flag span { color: #0F1B4D; background: #FFD400; }
#arcade { background: #F7E8C8; }
#arcade .founder-high-score { background: #FFFFFF; }
#arcade .founder-high-score span, #arcade .score-invitation { color: #0F1B4D; }
/* Keep the campaign pink as a decorative accent, not small pink-on-white text. */
#arcade .founder-high-score { border-bottom-color: #FF3EA5; }
#arcade .score-invitation > span { color: #0F1B4D; }
.hero .hero-bridge, .hero .scoreboard-status,
.donation-box .fine, #dream .closing-donation .fine,
#give-dialog .fine, #arcade .fine, #impact .story-note {
  color: #0F1B4D; opacity: 1;
}
.hero .scoreboard-status, .hero .donation-box .fine,
#dream .closing-donation .fine, #give-dialog .fine {
  font-family: var(--f-body); font-size: 12px; line-height: 1.65;
}
#dream .closing-donation .eyebrow { font-size: 10px; }
.hero .donation-meta .tag { font-size: 15px; }
.custom-gift input::placeholder { color: #0F1B4D; opacity: 1; }
/* Empty gift cells and legend have meaningful boundaries. */
#quest .gift, #quest .lg-empty { border-color: #0F1B4D; }
/* Stable text/boundaries in hover and selected states. */
#arcade #score-tabs button:hover { background: #DBEAFE; color: #0F1B4D; border-color: #0F1B4D; }
#arcade #score-tabs button[aria-selected=true],
#arcade #score-tabs button[aria-selected=true]:hover { background: #2563EB; color: #FFFFFF; border-color: #2563EB; }
#give-dialog .amount-options button:hover, #dream .amount-options button:hover { color: #0F1B4D; }
/* Two-color focus ring remains visible on light surfaces and navy footer. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid #0F1B4D; outline-offset: 3px;
  box-shadow: 0 0 0 3px #FFFFFF, 0 0 0 6px #0F1B4D;
}
.site-footer a:focus-visible { outline-color: #FFFFFF; box-shadow: 0 0 0 3px #0F1B4D, 0 0 0 6px #FFFFFF; }
