/* Launch content additions. Preserve each state's established design. */
[hidden] { display: none !important; }
.launch-module { max-width: 76rem; margin: 0 auto; padding: clamp(1.25rem, 4vw, 3rem); }
.launch-module h1, .launch-module h2 { margin-bottom: 1rem; }
.launch-module p + p, .launch-note { margin-top: 1rem; }
.launch-module p { max-width: 72ch; line-height: 1.65; }
.launch-module a, .launch-note a { text-decoration: underline; text-underline-offset: .18em; }
.launch-races { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: .6rem; list-style: none; padding: 0; margin: 1.5rem 0; }
.launch-races li { min-width: 0; }
.launch-races a { display: flex; align-items: center; min-height: 48px; border: 1px solid currentColor; padding: .65rem 1rem; text-decoration: none; font-size: 1rem; }
.launch-races a:hover { text-decoration: underline; }
.launch-official { border-top: 1px solid currentColor; margin-top: 2rem; }
.launch-note { font-size: 1rem; line-height: 1.6; max-width: 72ch; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
/* Empty news columns must not reserve half the reading width. */
.split:has(> :only-child), .lead:has(> :only-child), .ledger-wrap:has(> :only-child) { grid-template-columns: minmax(0, 1fr); }
.triple:has(> :nth-child(2):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.leadstory .launch-module { padding-inline: 0; }
@media (max-width: 700px) { .triple:has(> :nth-child(2):last-child) { grid-template-columns: minmax(0, 1fr); } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; } }
/* Privacy and cookie policies. Probo defines <probo-settings-link> when its banner
   loads; until then the control stays hidden and a plain-text fallback shows. */
probo-settings-link:not(:defined) { display: none !important; }
probo-settings-link:defined { cursor: pointer; text-decoration: underline; text-underline-offset: .18em; }
probo-settings-link:defined + .policy-settings-fallback { display: none; }
.legal-links { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .75rem; }
.legal-links a, .legal-links probo-settings-link:defined { display: inline-flex; align-items: center; min-height: 44px; }
.legal-links__sep { display: none; }
.policy-toc ul { list-style: none; padding: 0; margin: .5rem 0 0; display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.policy-toc a { display: inline-flex; align-items: center; min-height: 44px; }
.policy-section { scroll-margin-top: 1.5rem; }
.policy-section p, .policy-section li, .policy-list dd { max-width: 70ch; line-height: 1.65; overflow-wrap: anywhere; }
.policy-section ul { padding-left: 1.25rem; }
.policy-section li + li { margin-top: .6rem; }
.policy-list { margin: 0; display: grid; gap: 1rem; }
.policy-list dt code { font-weight: 700; overflow-wrap: anywhere; }
.policy-list dd { margin: .25rem 0 0; }
.policy-settings-fallback { font-style: italic; }
/* Race pages: official-record links and previous/next race navigation. */
.race-pager { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .75rem; }
.race-pager a, .race-resources a { display: inline-flex; align-items: center; min-height: 44px; }
/* Vendored icons (launch/icons.json; credited on each About page). Decorative only:
   every icon sits beside the word it illustrates, so the SVG is aria-hidden. */
.ico { display: inline-block; width: 1.2em; height: 1.2em; margin-right: .45em; vertical-align: -.22em; flex: none; overflow: visible; }
.has-ico .ico { width: 1.15em; height: 1.15em; vertical-align: -.16em; }
.icon-credit { font-size: .9em; }
/* News cards (preview samples now; NewsFeedReader items later). Shapes mirror NewsFeedReader:
   text, image/featured, and media cards (video 16:9, short video 9:16, audio/podcast 1:1,
   social post 4:3). Media areas are neutral placeholders; no external images are loaded.
   Each site's site.css can restyle these within its own design. */
.news-item { min-width: 0; overflow-wrap: anywhere; }
.news-item__media { position: relative; display: grid; place-items: center; width: 100%; margin-bottom: .75rem;
  border: 1px solid currentColor; background: repeating-linear-gradient(135deg, transparent 0 10px, color-mix(in srgb, currentColor 8%, transparent) 10px 12px); }
.news-item__media svg { width: 2.5rem; height: 2.5rem; opacity: .7; }
.news-item__media--16-9 { aspect-ratio: 16 / 9; }
.news-item__media--4-3 { aspect-ratio: 4 / 3; max-width: 24rem; }
.news-item__media--1-1 { aspect-ratio: 1 / 1; max-width: 12rem; }
.news-item__media--9-16 { aspect-ratio: 9 / 16; max-width: 10rem; }
.news-item__badge { position: absolute; left: .5rem; bottom: .5rem; padding: .15rem .5rem; font-size: .8rem; line-height: 1.4;
  background: Canvas; color: CanvasText; border: 1px solid currentColor; }
.news-item--featured .news-item__title { font-size: 1.25em; }
.news-item__summary { margin-top: .4rem; }
.news-item__byline { margin-top: .3rem; font-style: italic; }
.news-item__tags { display: flex; flex-wrap: wrap; gap: .35rem; list-style: none; padding: 0; margin: .5rem 0 0; }
.news-item__tags li { border: 1px solid currentColor; padding: .05rem .5rem; font-size: .8rem; }
.news-item__labels { margin-top: .4rem; font-size: .85rem; }
/* Homepage outside-money spotlight (build.py spotlight_values, site.js race picker). Layout only;
   each site.css gives the picker its own type and colour. The status line is for screen readers. */
.race-picker { display: grid; gap: .45rem; min-width: 0; }
.race-picker__field { display: flex; flex-wrap: wrap; align-items: stretch; gap: .5rem; min-width: 0; }
.race-picker__select { flex: 1 1 11rem; min-width: 0; min-height: 48px; font: inherit; }
.race-picker__button { flex: none; min-height: 48px; cursor: pointer; }
.race-picker__status { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
