/* FEATURED RACES (2026-10-16). crowdarchive.com Sports look, light only
   (RJ: light background with dark text, always). */
:root {
  --bg: #EEF2F5; --card: #FFFFFF; --ink: #0E2A47; --muted: #5D6F84; --line: #D3DCE5;
  --orange: #BC4909; --fill: #C2410C; --green: #1B7A3D; --stub: #C9D3DD;
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--ink); }
body { font-family: "Archivo", -apple-system, system-ui, sans-serif; font-size: 16px; line-height: 1.45; -webkit-text-size-adjust: 100%; }
.mono { font-family: "Space Mono", Menlo, monospace; }
.b { font-weight: 700; }
.hidden { display: none !important; }
a { color: var(--orange); }

.rc-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; max-width: 1040px; margin: 0 auto; }
.rc-brand { display: flex; align-items: center; gap: 8px; text-decoration: none; color: var(--ink); font-weight: 800; }
.rc-brand img { width: 28px; height: 28px; }
.rc-top nav { display: flex; gap: 16px; font-size: 14px; }
.rc-top nav a { color: var(--ink); text-decoration: none; font-weight: 600; }
.rc-top nav a:hover { text-decoration: underline; }

main { max-width: 1040px; margin: 0 auto; padding: 0 16px 40px; }
.rc-loading { color: var(--muted); padding: 40px 0; }
.rc-error { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 20px; margin: 24px 0; }

.rc-hero { padding: 18px 0 8px; }
.rc-eyebrow { color: var(--orange); font-weight: 700; font-size: 13px; letter-spacing: .08em; margin: 0 0 6px; }
h1 { font-style: italic; font-weight: 900; text-transform: uppercase; letter-spacing: -.01em; line-height: 1.02; font-size: clamp(32px, 7vw, 60px); margin: 0 0 12px; }
.rc-sub { color: var(--ink); font-size: 18px; max-width: 720px; margin: 0 0 18px; }
.rc-date { color: var(--muted); font-size: 14px; margin: -4px 0 12px; }
.rc-muted { color: var(--muted); margin: 0 0 8px; }
.rc-hint { color: var(--green); font-weight: 600; font-size: 14px; margin: 0 0 8px; }
.rc-h2 { font-style: italic; font-weight: 900; text-transform: uppercase; font-size: 26px; margin: 34px 0 14px; }
.rc-h3 { font-style: italic; font-weight: 900; text-transform: uppercase; font-size: 21px; margin: 0 0 6px; }

.rc-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 20px; border-radius: 10px;
  border: 2px solid var(--fill); background: var(--fill); color: #fff; font: inherit; font-weight: 800; text-decoration: none; cursor: pointer; }
.rc-btn:hover { background: var(--orange); border-color: var(--orange); }
.rc-btn:focus-visible, a:focus-visible, input:focus-visible { outline: 3px solid var(--ink); outline-offset: 2px; }
.rc-btn-line { background: transparent; color: var(--orange); }
.rc-btn-line:hover { background: #fff; color: var(--orange); }
.rc-btn-big { font-size: 19px; padding: 14px 28px; text-transform: uppercase; font-style: italic; letter-spacing: .02em; }
.rc-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 6px 0 4px; }

.rc-code { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px; max-width: 520px; margin: 0 0 16px; }
.rc-code label { display: block; margin-bottom: 2px; }
.rc-code-row { display: flex; gap: 8px; }
.rc-code-row input { flex: 1; min-width: 0; min-height: 44px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; font: inherit; font-family: "Space Mono", monospace; text-transform: uppercase; color: var(--ink); background: #fff; }
.rc-err { color: #A11D1D; font-size: 14px; margin: 8px 0 0; }
.rc-devices { list-style: none; padding: 0; margin: 0 0 16px; color: var(--muted); font-size: 15px; }
.rc-devices li { padding: 2px 0; }
.rc-claim { margin: 4px 0 0; }
.rc-claim-tip { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; margin-top: 8px; max-width: 520px; }
.rc-claim-tip p { margin: 0 0 4px; }

.rc-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 16px; }
.rc-card { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 18px; display: flex; flex-direction: column; gap: 6px; }
.rc-card h3 { font-style: italic; font-weight: 900; text-transform: uppercase; font-size: 26px; line-height: 1.05; margin: 0; }
.rc-card h3 a { color: var(--ink); text-decoration: none; }
.rc-card .rc-eyebrow { margin: 0; }
.rc-card-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
.rc-cap { color: var(--muted); font-size: 13px; margin: 6px 0 0; }
.rc-legend { color: var(--muted); font-size: 12px; margin: 14px 0 0; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.sw { display: inline-block; width: 12px; height: 12px; border-radius: 2px; }
.sw-open { background: var(--green); } .sw-fill { background: var(--fill); margin-left: 10px; }

.rc-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 22px 0; }
.rc-tile { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.rc-tile b { display: block; font-size: clamp(26px, 6vw, 40px); font-weight: 900; font-style: italic; line-height: 1; }
.rc-tile span { color: var(--muted); font-size: 14px; }
@media (max-width: 520px) { .rc-tiles { grid-template-columns: 1fr; } .rc-tile { display: flex; align-items: baseline; gap: 10px; } .rc-tile b { display: inline; } }

.rc-panel { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 18px; margin: 0 0 18px; }

/* year bars */
.rc-years { position: relative; display: flex; align-items: flex-end; gap: 4px; height: 210px; padding: 22px 0 0; margin-top: 8px; overflow-x: auto; }
.rc-years.mini { height: 120px; padding-top: 16px; gap: 3px; }
.rc-goal { position: absolute; left: 0; right: 0; border-top: 2px dashed var(--green); pointer-events: none; }
.rc-goal span { position: absolute; right: 0; top: -18px; font-family: "Space Mono", monospace; font-size: 10px; color: var(--green); font-weight: 700; background: var(--card); padding-left: 4px; }
.rc-yr { flex: 1 1 0; min-width: 26px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; border: 0; background: none; padding: 0; font: inherit; color: var(--ink); }
.rc-years.mini .rc-yr { min-width: 14px; }
.rc-yr .n { font-family: "Space Mono", monospace; font-size: 10px; color: var(--muted); margin-bottom: 2px; white-space: nowrap; }
.rc-yr .bar { width: 100%; max-width: 34px; background: var(--fill); border-radius: 3px 3px 0 0; min-height: 3px; }
.rc-yr .y { font-family: "Space Mono", monospace; font-size: 10px; color: var(--muted); margin-top: 4px; }
.rc-years.mini .rc-yr .y { font-size: 8px; }
.rc-yr.open .bar { background: var(--green); }
.rc-yr.open { cursor: pointer; }
.rc-yr.open:hover .bar { filter: brightness(1.15); }
.rc-yr.open .n { color: var(--green); font-weight: 700; }
.rc-yr.none .bar { background: repeating-linear-gradient(45deg, var(--stub), var(--stub) 3px, #fff 3px, #fff 6px); }
.rc-yr.next .bar { background: transparent; border: 2px dashed var(--fill); border-bottom: 0; }

/* map */
.rc-map { width: 100%; aspect-ratio: 4 / 3; max-height: 520px; background: #F6F8FA; border-radius: 10px; overflow: hidden; }
.rc-map svg { width: 100%; height: 100%; display: block; }
.rc-map .empty { display: flex; align-items: center; justify-content: center; height: 100%; color: var(--muted); padding: 16px; text-align: center; }

.rc-cta-band { text-align: center; padding: 18px 0 6px; }
.rc-foot { border-top: 1px solid var(--line); margin-top: 36px; padding-top: 18px; color: var(--muted); font-size: 15px; }
.rc-foot .b { color: var(--ink); }

.rc-overlay { position: fixed; inset: 0; background: rgba(14, 42, 71, .45); display: flex; align-items: center; justify-content: center; padding: 16px; z-index: 50; }
.rc-dialog { background: #fff; color: var(--ink); border-radius: 14px; padding: 22px; max-width: 440px; width: 100%; }
.rc-dialog h2 { font-size: 20px; margin: 0 0 8px; }
.rc-dialog-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.rc-toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); background: var(--ink); color: #fff; padding: 10px 16px; border-radius: 10px; font-weight: 600; opacity: 0; pointer-events: none; transition: opacity .2s; max-width: calc(100% - 32px); }
.rc-toast.on { opacity: 1; }
/* the small chart on a list card: counts only on open years (room) */
.rc-years.mini .rc-yr .n { visibility: hidden; }
.rc-years.mini .rc-yr.open .n { visibility: visible; }
.rc-years.tight { gap: 2px; }
.rc-years.tight .rc-yr { min-width: 0; }
.rc-years.tight .rc-yr .n { font-size: 8px; }
.rc-years.tight .rc-yr.none .n { visibility: hidden; }
.rc-years.tight .rc-yr .y { font-size: 9px; }

/* CONTRIBUTE PICKERS (2026-10-16): race / run club / charity search boxes */
.rc-pick { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 16px; margin: 0 0 18px; }
#rr-pick { margin-top: 18px; scroll-margin-top: 16px; }
.rc-pickrow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; gap: 14px; align-items: end; }
@media (max-width: 860px) { .rc-pickrow { grid-template-columns: 1fr; } .rc-pickgo .rc-btn { width: 100%; } }
.rc-ps { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.rc-ps-label { font-size: 14px; }
.rc-ps-fixed { display: flex; align-items: center; min-height: 44px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; background: #F6F8FA; font-weight: 700; }
.rc-ps-field { position: relative; }
.rc-ps-input { width: 100%; min-height: 44px; padding: 8px 12px; border: 1px solid #8796A8; border-radius: 8px; font: inherit; color: var(--ink); background: #fff; }
.rc-ps-input::placeholder { color: var(--muted); opacity: 1; }
.rc-ps-input:disabled { background: #F6F8FA; border-color: var(--line); }
.rc-ps-input:focus-visible { outline: 3px solid var(--ink); outline-offset: 2px; }
.rc-ps-list { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 20; list-style: none; margin: 0; padding: 4px; background: #fff; border: 1px solid #8796A8; border-radius: 10px; box-shadow: 0 8px 24px rgba(14, 42, 71, .15); max-height: 320px; overflow-y: auto; }
.rc-ps-opt { padding: 9px 10px; border-radius: 6px; cursor: pointer; display: flex; flex-direction: column; }
.rc-ps-opt small { color: var(--muted); font-size: 13px; }
.rc-ps-opt:hover, .rc-ps-opt.on { background: #EEF2F5; }
.rc-ps-opt.add { flex-direction: row; flex-wrap: wrap; gap: 4px; color: var(--orange); border-top: 1px solid var(--line); }
.rc-ps-empty { padding: 9px 10px; color: var(--muted); }
.rc-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.rc-chips:empty { display: none; }
.rc-chip { display: inline-flex; align-items: center; gap: 4px; background: #E3E9EE; border-radius: 999px; padding: 4px 4px 4px 12px; font-weight: 600; font-size: 14px; max-width: 100%; }
.rc-chip > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rc-chip.added { background: #FBE3D4; }
.rc-chip-x { border: 0; background: transparent; color: var(--ink); font-size: 20px; line-height: 1; width: 32px; height: 32px; border-radius: 50%; cursor: pointer; }
.rc-chip-x:hover { background: #fff; }
.rc-ps-note { font-size: 13px; color: var(--muted); margin: 0; }
.rc-pick-help { margin: 12px 0 8px; font-size: 15px; }
.rc-pick .rc-devices { margin: 0; }
.rc-clubcall { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-top: 12px; padding: 10px 14px; border-radius: 10px; background: #E5F2E9; color: var(--green); text-decoration: none; }
.rc-clubcall span { color: var(--ink); }
/* a chosen race shows as one chip in place of the box; × opens the search again */
.rc-ps.has-one .rc-ps-field { display: none; }
.rc-ps.has-one .rc-chip { min-height: 44px; border-radius: 8px; font-size: 16px; }

/* role + bib, waiting chips (2026-10-27) */
.rc-pickrow { grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); }
.rc-pickgo { grid-column: 1 / -1; }
.rc-pickgo .rc-btn { width: 100%; }
select.rc-ps-input { appearance: auto; }
.rc-chip-wait { font-size: 12px; font-weight: 600; color: #7A2E06; margin-left: 4px; white-space: nowrap; }

/* iPhone sheet (2026-10-27) */
.rc-sheet-wrap { align-items: flex-end; padding: 0; }
.rc-sheet { position: relative; background: #fff; color: var(--ink); width: 100%; max-width: 480px; max-height: 92vh; overflow-y: auto; border-radius: 22px 22px 0 0; padding: 26px 20px 28px; }
.rc-sheet-x, .rp-back { position: absolute; top: 8px; border: 0; background: none; font-size: 28px; color: var(--ink); width: 44px; height: 44px; cursor: pointer; }
.rc-sheet-x { right: 8px; } .rp-back { left: 8px; }
.rp-scr { display: flex; flex-direction: column; gap: 12px; text-align: center; padding-top: 22px; }
.rp-small { margin: 10px 0 0; font-size: 14px; }
.rp-h { font-style: italic; font-weight: 900; font-size: 28px; line-height: 1.02; margin: 0; text-transform: uppercase; }
.rp-h.sm { font-size: 24px; }
.rp-sub { margin: 0; font-size: 16px; }
.rp-art { font-size: 36px; margin: 6px 0; } .rp-art.sm { font-size: 26px; margin: 0; }
.rp-btn { width: 100%; }
.rp-foot { margin: 0; font-size: 14px; font-style: italic; color: var(--muted); }
.rp-step { margin: 0; text-align: left; font-size: 15px; }
.rp-step b { display: inline-block; width: 24px; height: 24px; border-radius: 50%; background: var(--ink); color: #fff; text-align: center; line-height: 24px; font-size: 13px; margin-right: 6px; }
.rp-note { margin: 0; font-size: 14px; color: var(--muted); background: #F7F3EA; padding: 10px; border-radius: 8px; text-align: left; }

/* race photos (2026-10-27) */
.rc-photos { display: grid; gap: 6px; margin: 8px 0 4px; border-radius: 14px; overflow: hidden; }
.rc-photos.n1 { grid-template-columns: 1fr; }
.rc-photos.n2 { grid-template-columns: 1fr 1fr; }
.rc-photos.n3 { grid-template-columns: 1fr 1fr 1fr; grid-auto-rows: 220px; }
.rc-ph { position: relative; margin: 0; background: #DCE3EA; min-height: 160px; overflow: hidden; }
.rc-ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.rc-photos.n1 .rc-ph, .rc-photos.n2 .rc-ph { aspect-ratio: 3 / 2; }
.rc-ph figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 6px 10px; font-size: 12px; font-weight: 600; color: #fff; background: rgba(14, 42, 71, .78); opacity: 0; transition: opacity .15s; pointer-events: none; }
.rc-ph:hover figcaption { opacity: 1; }
.rc-cardph { border-radius: 10px; aspect-ratio: 16 / 9; min-height: 0; margin: -4px 0 6px; }
@media (max-width: 640px) { .rc-photos.n3 { grid-auto-rows: 120px; } }

/* DESKTOP SPREAD (RJ 2026-10-27: "spread it out and add images") */
main, header.rc-top { max-width: 1240px; }
.rc-split { display: flex; flex-direction: column; gap: 16px; }
.rc-split-race .rc-photos { order: -1; }
.rc-row2 { display: flex; flex-direction: column; gap: 4px; }
.rc-panels { display: block; }
@media (min-width: 960px) {
  .rc-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 32px; align-items: center; margin-bottom: 12px; }
  .rc-split-race .rc-photos { order: 2; }
  .rc-split:has(> .rc-photos.hidden) { grid-template-columns: 1fr; }
  .rc-split .rc-photos { margin: 0; }
  .rc-split .rc-photos.n3 { grid-auto-rows: 220px; }
  .rc-sub { font-size: 19px; }
  .rc-row2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: start; }
  .rc-row2 .rc-code { max-width: none; }
  .rc-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .rc-panels { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 18px; align-items: start; }
}
@media (min-width: 960px) {
  /* the CONTRIBUTE button sits at the end of the row again, so an open list never covers it */
  .rc-pickrow { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
  .rc-pickgo { grid-column: auto; }
}

/* MULTI-RACE (RJ 2026-10-27): tick races on the cards, one search for all */
.rc-tick { display: flex; align-items: center; gap: 8px; margin-top: 6px; font-weight: 700; cursor: pointer; width: max-content; }
.rc-tick input { width: 20px; height: 20px; accent-color: var(--orange, #C2410C); cursor: pointer; }
.rc-card.ticked { outline: 3px solid var(--orange, #C2410C); outline-offset: -1px; }
.rc-multibar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; display: flex; gap: 14px; align-items: center; justify-content: center;
  flex-wrap: wrap; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); background: var(--card, #fff); border-top: 1px solid var(--line); box-shadow: 0 -4px 18px rgba(0,0,0,.08); }
.rc-multibar p { margin: 0; font-weight: 700; }
.rc-multibar.hidden { display: none; }
body:has(.rc-multibar:not(.hidden)) main { padding-bottom: 90px; }
/* multi-race: the race box takes its own full line on a computer so the picked races sit side by side */
.rc-chips { display: flex; flex-wrap: wrap; gap: 6px; }
@media (min-width: 960px) { .rc-pickrow > .rc-ps[data-box=race] { grid-column: 1 / -1; } .rc-pickrow > .rc-ps[data-box=race] .rc-ps-field { max-width: 420px; } }
/* PER-RACE PICKS (RJ 2026-10-27): one row per race when several are picked */
.rc-perrace { display: grid; gap: 10px; margin-top: 14px; }
.rc-perrace.hidden { display: none; }
.rc-prow { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; background: var(--bg); }
.rc-prow-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 14px; }
.rc-prow-title { margin: 0; font-size: 17px; }
.rc-prow-skip, .rc-prow-undo { background: none; border: 0; padding: 0; color: var(--orange); font: inherit; font-size: 14px; text-decoration: underline; cursor: pointer; }
.rc-prow-boxes { display: grid; gap: 10px; margin-top: 8px; }
.rc-prow-boxes.hidden { display: none; }
.rc-prow-skipped { margin: 6px 0 0; color: var(--muted); }
@media (min-width: 720px) { .rc-prow-boxes { grid-template-columns: 1fr 1fr; } }
.rc-pickgo-end { margin-top: 14px; display: flex; justify-content: flex-end; }
/* RJ 2026-10-27: the tick hint above the cards, and the up-arrow notes */
.rc-tickhint { margin: -4px 0 14px; font-weight: 700; color: var(--orange); }
.rc-upnote { background: none; border: 0; padding: 0; font: inherit; font-weight: 800; color: var(--orange); cursor: pointer; text-align: left; }
.rc-upnote:hover { text-decoration: underline; }
.rc-card-up { display: none; margin-top: 2px; }
.rc-card.ticked .rc-card-up { display: block; }
/* RJ 2026-10-27: the big callout above the race cards. Round 2 ("that brown fades into the space ...
   it is left justified ... it has to pop, not blend in"): a bright full-width band, centred, numbered steps. */
.rc-callout { margin: 28px 0 10px; padding: 30px 28px 26px; border-radius: 20px; text-align: center;
  background: linear-gradient(135deg, #FF6A1A 0%, #F2380F 100%); color: #fff;
  box-shadow: 0 14px 34px rgba(242, 56, 15, .28); }
.rc-callout p { margin: 0; }
.rc-callout-q { font-size: clamp(24px, 3.6vw, 40px); font-weight: 900; font-style: italic; line-height: 1.12; text-transform: uppercase; letter-spacing: -.01em; }
.rc-callout-sub { margin-top: 8px !important; font-size: clamp(19px, 2.4vw, 27px); font-weight: 800; }
.rc-callout-steps { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px 14px; margin-top: 18px !important; }
.rc-callout-steps span { display: inline-flex; align-items: center; gap: 10px; background: #fff; color: var(--ink);
  font-size: clamp(16px, 1.55vw, 21px); font-weight: 900; padding: 9px 18px 9px 9px; border-radius: 999px; box-shadow: 0 3px 0 rgba(0,0,0,.12); }
.rc-callout-steps span i { font-style: normal; display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--ink); color: #fff; font-size: 17px; }
.rc-callout-steps em { font-style: normal; display: inline-flex; align-items: center; gap: 14px; }   /* an arrow never strands at a line end */
.rc-callout-steps b { color: #fff; font-size: clamp(24px, 2.6vw, 32px); font-weight: 900; line-height: 1; }
.rc-callout-note { margin-top: 16px !important; font-size: clamp(15px, 1.5vw, 18px); font-weight: 700; color: #fff; }
@media (max-width: 640px) { .rc-callout-steps, .rc-callout-steps em { flex-direction: column; } .rc-callout-steps b { transform: rotate(90deg); } }
/* SIGN IN sheet (RJ 2026-10-28) */
.rc-signin-card { text-align: center; position: relative; max-width: 440px; }
.rc-signin-card h2 { font-style: italic; font-weight: 900; margin: 6px 0 10px; }
.rc-signin-go { display: inline-flex; align-items: center; gap: 10px; margin: 8px 0 4px; }
.rc-signin-go .g { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: #fff; color: var(--orange); font-weight: 900; }
.rc-signin-fine { font-size: 13px; margin-top: 10px; }

/* =====================================================================
   HALLOWEEN THEME (RJ 2026-10-28: "spooky this up a bit ... let's go all in with the page colors and
   decorations"). Only on a featured public event whose copy asks for it (races.js EVENT_COPY theme).
   Two looks: .ev-halloween = candy corn (light, the default: RJ's light-background rule)
   and .ev-halloween.ev-night = midnight (dark). Decorations are drawn by races.js and never take clicks.
   ===================================================================== */
body.ev-halloween {
  --bg: #FFF1DF; --card: #FFFDF8; --ink: #1E0F2B; --muted: #6A4A5C; --line: #F1CFA8;
  --orange: #B83C06; --fill: #D9480F; --green: #4E7D12; --stub: #E7C9A6; --purple: #5B2A86;
  background: radial-gradient(1200px 500px at 50% -120px, #FFD9A8 0%, rgba(255,217,168,0) 70%), var(--bg);
}
.ev-halloween h1, .ev-halloween .rc-h3 { font-family: "Creepster", "Archivo", sans-serif; font-style: normal; font-weight: 400; letter-spacing: .02em; color: var(--purple); }
.ev-halloween h1 { font-size: clamp(42px, 9vw, 92px); line-height: .95; text-shadow: 3px 3px 0 #FFB347; }
.ev-halloween .rc-h3 { font-size: 26px; }
.ev-halloween .rc-eyebrow { color: var(--purple); }
.ev-halloween .rc-top { position: relative; }
.ev-halloween .rc-top::after { content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 6px; border-radius: 3px;
  background: repeating-linear-gradient(90deg, #F7B32B 0 22px, #EE6C1A 22px 44px, #FFFDF8 44px 66px); }
.ev-halloween .rc-btn { background: var(--fill); border-color: var(--fill); color: #fff; }
.ev-halloween .rc-btn:hover { background: var(--purple); border-color: var(--purple); }
.ev-halloween .rc-btn-line { background: transparent; color: var(--orange); }
.ev-halloween .rc-clubcall { background: #EFE3FA; color: var(--purple); }
.ev-halloween .rc-pick { border: 2px solid var(--fill); box-shadow: 6px 6px 0 #F7B32B; }
/* tombstone tiles */
.ev-halloween .rc-tile { border-radius: 70px 70px 12px 12px; text-align: center; padding-top: 22px; border: 2px solid #CDB9D9; background: linear-gradient(#FFFDF8, #F4EEF9); }
.ev-halloween .rc-tile b { color: var(--purple); }
@media (max-width: 520px) { .ev-halloween .rc-tile { border-radius: 40px 40px 12px 12px; justify-content: center; } }
.ev-halloween .rc-panel { border: 2px solid var(--line); }
.ev-halloween .rc-yr .bar { background: linear-gradient(180deg, #F7B32B 0%, #EE6C1A 55%, #D9480F 100%); }
.ev-halloween .rc-yr.none .bar { background: repeating-linear-gradient(45deg, #CDB9D9, #CDB9D9 3px, #FFFDF8 3px, #FFFDF8 6px); }
.ev-halloween .rc-yr.next .bar { background: transparent; border-color: var(--purple); }
.ev-halloween .rc-map { background: #F6EEF9; }
.ev-halloween .rc-cta-band .rc-btn::before, .ev-halloween #rr-add::before { content: "🎃"; font-style: normal; margin-right: 10px; }
.ev-halloween .rc-foot { border-top: 0; }
.ev-deco { position: absolute; pointer-events: none; z-index: 0; }
.ev-halloween .rc-hero, .ev-halloween .rc-split { position: relative; }
.ev-halloween .rc-split > *:not(.ev-deco) { position: relative; z-index: 1; }
.ev-web { top: -4px; width: 130px; height: 130px; }
.ev-web.l { left: -16px; } .ev-web.r { right: -16px; transform: scaleX(-1); }
.ev-spider { top: -6px; right: 150px; width: 30px; z-index: 2; animation: ev-drop 6s ease-in-out infinite alternate; transform-origin: top center; }
.ev-bats { top: 150px; left: 55%; right: 0; height: 170px; overflow: hidden; }
.ev-bat { position: absolute; width: 64px; animation: ev-fly 14s linear infinite; }
.ev-bat:nth-child(2) { width: 42px; top: 60px; animation-duration: 19s; animation-delay: -6s; }
.ev-bat:nth-child(3) { width: 52px; top: 26px; animation-duration: 23s; animation-delay: -13s; }
.ev-bat svg { animation: ev-flap .35s ease-in-out infinite alternate; transform-origin: center; display: block; }
.ev-ghosts { display: flex; justify-content: center; gap: 22px; font-size: 30px; margin: 30px 0 4px; }
.ev-ghosts span { display: inline-block; animation: ev-bob 3s ease-in-out infinite alternate; }
.ev-ghosts span:nth-child(2n) { animation-delay: -1.5s; }
@keyframes ev-fly { from { left: -60px; transform: translateY(0); } 50% { transform: translateY(30px); } to { left: 105%; transform: translateY(0); } }
@keyframes ev-flap { from { transform: scaleY(1); } to { transform: scaleY(.55); } }
@keyframes ev-drop { from { transform: translateY(0); } to { transform: translateY(60px); } }
@keyframes ev-bob { from { transform: translateY(0); } to { transform: translateY(-8px); } }
@media (prefers-reduced-motion: reduce) { .ev-bat, .ev-bat svg, .ev-spider, .ev-ghosts span { animation: none; } .ev-bat { left: 20%; } .ev-bat:nth-child(2) { left: 55%; } .ev-bat:nth-child(3) { left: 80%; } }
@media (max-width: 640px) { .ev-web { width: 80px; height: 80px; } .ev-spider { right: 70px; } .ev-bats { top: auto; bottom: 0; left: 40%; height: 120px; } }
@media (max-width: 959px) { .ev-bats { left: 50%; } }

/* MIDNIGHT: the dark look (offered as a choice, not the default) */
body.ev-halloween.ev-night {
  --bg: #140D1C; --card: #221730; --ink: #F7ECDD; --muted: #CBB7CF; --line: #3E2C50;
  --orange: #FF8A2A; --fill: #E8590C; --green: #9BE564; --stub: #4A3A57; --purple: #C9A2FF;
  background: radial-gradient(900px 420px at 80% -80px, #4B2A6E 0%, rgba(75,42,110,0) 70%), var(--bg);
}
.ev-night h1 { text-shadow: 3px 3px 0 #E8590C; }
.ev-night .rc-tile { background: linear-gradient(#2B1E3B, #1C1327); border-color: #4E3A63; }
.ev-night .rc-clubcall { background: #2E2140; color: var(--purple); }
.ev-night .rc-clubcall span, .ev-night .rc-sub, .ev-night .rc-top nav a, .ev-night .rc-brand, .ev-night .rc-foot .b { color: var(--ink); }
.ev-night .rc-ps-input, .ev-night .rc-ps-fixed, .ev-night .rc-ps-list, .ev-night .rc-chip, .ev-night .rc-dialog, .ev-night .rc-sheet { background: #1A1124; color: var(--ink); border-color: #5B4670; }
.ev-night .rc-ps-opt:hover, .ev-night .rc-ps-opt.on { background: #2E2140; }
.ev-night .rc-map { background: #1A1124; }
.ev-night .rc-goal span { background: var(--card); }
.ev-night .rc-yr.none .bar { background: repeating-linear-gradient(45deg, #4A3A57, #4A3A57 3px, #221730 3px, #221730 6px); }
.ev-night .rc-top::after { background: repeating-linear-gradient(90deg, #F7B32B 0 22px, #EE6C1A 22px 44px, #221730 44px 66px); }
.ev-night .rc-btn-line:hover { background: #221730; }

/* VISITOR LOOK SWITCH (RJ 2026-10-28: "a toggle switch for candy corn / midnight so people can switch") */
.ev-switch { display: inline-flex; border: 2px solid var(--purple); border-radius: 999px; overflow: hidden; background: var(--card); }
.ev-switch button { border: 0; background: transparent; color: var(--ink); font: inherit; font-size: 13px; font-weight: 700; padding: 6px 12px; min-height: 36px; cursor: pointer; display: inline-flex; gap: 6px; align-items: center; }
.ev-switch button[aria-pressed="true"] { background: var(--purple); color: var(--card); }
.ev-switch button:focus-visible { outline: 3px solid var(--fill); outline-offset: -3px; }
.ev-halloween .rc-top nav { align-items: center; }
@media (max-width: 420px) { .ev-switch .lbl { display: none; } .ev-switch button { padding: 6px 10px; font-size: 16px; } }

/* =====================================================================
   PANTHERS THEME (RJ 2026-10-28: "bring in the colors no logo" ... "do it both, give it the swap effect
   like halloween has. this is a demo for the team, let's show off a little"). races.js EVENT_COPY theme.
   Panther Blue #0085CA · Black #101820 · Silver #BFC0BF. No logo, no cat, no claw shapes.
   .ev-panthers = Panther Blue (light, the default: RJ's light-background rule);
   .ev-panthers.ev-night = Blackout (dark, a visitor's choice). Decorations never take clicks.
   ===================================================================== */
body.ev-panthers {
  --bg: #F3F6F8; --card: #FFFFFF; --ink: #101820; --muted: #4E5A66; --line: #C9D2DA;
  --orange: #006BA6; --fill: #0085CA; --green: #0B7A52; --stub: #BFC0BF; --purple: #101820;
  background: linear-gradient(180deg, #E4EEF5 0, rgba(228,238,245,0) 520px), var(--bg);
}
.ev-panthers h1, .ev-panthers .rc-h3, .ev-panthers .ts-title { font-family: "Bebas Neue", "Archivo", sans-serif; font-style: normal; font-weight: 400; letter-spacing: .03em; }
.ev-panthers h1 { font-size: clamp(48px, 10vw, 104px); line-height: .9; color: var(--ink); text-shadow: 4px 4px 0 #0085CA; }
.ev-panthers .rc-h3 { font-size: 30px; color: var(--ink); }
.ev-panthers .rc-eyebrow { color: #0085CA; font-weight: 700; letter-spacing: .12em; }
.ev-panthers .rc-date { display: inline-block; background: #101820; color: #fff; padding: 4px 10px; border-radius: 4px; border-left: 6px solid #0085CA; }
.ev-panthers .rc-top { position: relative; }
/* jersey trim: blue, black, silver */
.ev-panthers .rc-top::after { content: ""; position: absolute; left: 0; right: 0; bottom: -10px; height: 10px;
  background: linear-gradient(180deg, #0085CA 0 4px, #101820 4px 7px, #BFC0BF 7px 10px); }
.ev-panthers .rc-top nav { align-items: center; }
.ev-panthers .rc-btn { background: #0085CA; border-color: #0085CA; color: #fff; }
.ev-panthers .rc-btn:hover { background: #101820; border-color: #101820; }
.ev-panthers .rc-btn-line { background: transparent; color: #006BA6; border-color: #0085CA; }
.ev-panthers .rc-btn-line:hover { background: #fff; color: #101820; }
.ev-panthers .rc-clubcall { background: #E1EFF8; color: #101820; }
.ev-panthers .rc-pick { border: 2px solid #101820; box-shadow: 6px 6px 0 #0085CA; }
/* scoreboard tiles */
.ev-panthers .rc-tile { background: #101820; border: 0; border-bottom: 5px solid #0085CA; text-align: center; }
.ev-panthers .rc-tile b { font-family: "Orbitron", "Space Mono", monospace; font-style: normal; font-weight: 900; color: #fff; letter-spacing: .04em;
  text-shadow: 0 0 10px rgba(0,133,202,.75); }
.ev-panthers .rc-tile span { color: #BFC0BF; }
@media (max-width: 520px) { .ev-panthers .rc-tile { justify-content: center; } }
.ev-panthers .rc-panel { border: 2px solid var(--line); }
.ev-panthers .rc-yr .bar { background: linear-gradient(180deg, #0085CA 0%, #0085CA 70%, #101820 100%); }
.ev-panthers .rc-yr[aria-pressed="true"] .bar { background: #101820; box-shadow: 0 0 0 3px #0085CA; }
.ev-panthers .rc-yr[aria-pressed="true"] .y { color: var(--ink); font-weight: 700; }
.ev-panthers button.rc-yr { cursor: pointer; }
.ev-panthers button.rc-yr:hover .bar { filter: brightness(1.15); }
.ev-panthers .rc-yr.next .bar { background: transparent; border-color: #0085CA; }
.ev-panthers .rc-map { background: #EAF1F6; }
.ev-panthers .rc-cta-band .rc-btn::before, .ev-panthers #rr-add::before { content: "🏈"; font-style: normal; margin-right: 10px; }
.ev-panthers .rc-foot { border-top: 0; }
.ev-panthers .rc-hero, .ev-panthers .rc-split { position: relative; }
.ev-panthers .rc-split > *:not(.ev-deco) { position: relative; z-index: 1; }
/* the field: yard lines behind the hero */
.ev-field { inset: 0; overflow: hidden; opacity: .5; }
.ev-field i { position: absolute; top: 0; bottom: 0; width: 0; border-left: 2px solid #BFC0BF; }
.ev-field i::before, .ev-field i::after { content: ""; position: absolute; left: -9px; width: 16px; height: 0; border-top: 2px solid #BFC0BF; }
.ev-field i::before { top: 34%; } .ev-field i::after { top: 66%; }
.ev-field b { position: absolute; bottom: 8px; left: -14px; width: 28px; text-align: center; font: 700 22px/1 "Bebas Neue", sans-serif; color: #BFC0BF; }
/* one ball, thrown across */
.ev-ball { top: 40px; left: 0; right: 0; height: 160px; overflow: hidden; }
.ev-ball span { position: absolute; width: 58px; color: #6B4423; animation: ev-throw 9s cubic-bezier(.3,.1,.5,1) infinite; }
.ev-ball svg { display: block; animation: ev-spiral .5s linear infinite; }
@keyframes ev-throw { 0% { left: -70px; top: 120px; transform: rotate(-25deg); } 45% { top: 0; transform: rotate(0deg); } 80%, 100% { left: 105%; top: 110px; transform: rotate(25deg); } }
@keyframes ev-spiral { from { transform: scaleY(1); } 50% { transform: scaleY(.7); } to { transform: scaleY(1); } }
.ev-fans { font-size: 30px; }
@media (prefers-reduced-motion: reduce) { .ev-ball span, .ev-ball svg { animation: none; } .ev-ball span { left: 70%; top: 20px; } }
@media (max-width: 640px) { .ev-field b { font-size: 16px; } .ev-ball { height: 110px; } }

/* a season's games */
.ts-season { margin-top: 16px; border-top: 2px solid var(--line); padding-top: 12px; }
.ts-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin-bottom: 8px; }
.ts-title { margin: 0; font-size: 28px; }
.ts-sub { margin: 0; font-size: 11px; color: var(--muted); letter-spacing: .06em; }
.ts-gal { margin-left: auto; min-height: 38px; padding: 6px 14px; font-size: 14px; }
.ts-games { list-style: none; margin: 0; padding: 0; max-height: 420px; overflow-y: auto; }
.ts-sep { font-size: 11px; letter-spacing: .1em; color: #0085CA; font-weight: 700; padding: 10px 0 4px; }
.ts-game { display: grid; grid-template-columns: 62px minmax(0, 1fr) auto auto; gap: 10px; align-items: center; padding: 8px 4px; border-bottom: 1px solid var(--line); }
.ts-game.home { background: linear-gradient(90deg, rgba(0,133,202,.08), rgba(0,133,202,0) 60%); }
.ts-game.future { opacity: .75; }
.ts-when { font-size: 12px; color: var(--muted); }
.ts-opp b { display: block; font-size: 15px; }
.ts-opp small { display: block; color: var(--muted); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ts-score { font-size: 13px; font-weight: 700; padding: 3px 8px; border-radius: 4px; background: var(--stub); color: #101820; white-space: nowrap; }
.ts-score.r-W { background: #0085CA; color: #fff; }
.ts-score.r-L { background: #101820; color: #fff; }
.ts-score.r-T { background: #BFC0BF; color: #101820; }
.ts-n { font-size: 12px; color: var(--muted); min-width: 0; }
.ts-empty { color: var(--muted); padding: 10px 0; }
@media (max-width: 520px) { .ts-game { grid-template-columns: 50px minmax(0, 1fr) auto; } .ts-n { display: none; } }
/* the stadium map */
.us-nation { fill: #FFFFFF; stroke: #8FA3B4; stroke-width: 2; stroke-linejoin: round; }
.us-states { fill: none; stroke: #C9D2DA; stroke-width: 1; }
.pin { cursor: pointer; }
.pin circle { transition: transform .15s; transform-box: fill-box; transform-origin: center; }
.pin:hover circle, .pin:focus circle, .pin.on circle { transform: scale(1.35); }
.pin:focus { outline: none; }
.pin.on circle { stroke: #101820; }
.pin-lab { font: 22px/1 "Bebas Neue", "Archivo", sans-serif; fill: var(--ink); letter-spacing: .04em; }
.pin-lab.small { font-size: 20px; }
.ts-venue { margin-top: 10px; font-weight: 600; color: var(--ink); }

/* BLACKOUT: the dark look (a visitor's choice, never the default) */
body.ev-panthers.ev-night {
  --bg: #0B1117; --card: #141E28; --ink: #F2F5F7; --muted: #A9B4BE; --line: #2A3A48;
  --orange: #4FB8EC; --fill: #0085CA; --green: #3FD39A; --stub: #3A4A58; --purple: #BFC0BF;
  background: radial-gradient(900px 420px at 80% -80px, rgba(0,133,202,.35) 0%, rgba(0,133,202,0) 70%), var(--bg);
}
.ev-panthers.ev-night h1 { color: #fff; text-shadow: 4px 4px 0 #0085CA; }
.ev-panthers.ev-night .rc-h3, .ev-panthers.ev-night .ts-title { color: #fff; }
.ev-panthers.ev-night .rc-eyebrow, .ev-panthers.ev-night .ts-sep { color: #4FB8EC; }
.ev-panthers.ev-night .rc-date { background: #0085CA; border-left-color: #fff; }
.ev-panthers.ev-night .rc-tile { background: #05090D; border-bottom-color: #0085CA; }
.ev-panthers.ev-night .rc-clubcall { background: #13273A; color: #fff; }
.ev-panthers.ev-night .rc-pick { border-color: #BFC0BF; }
.ev-panthers.ev-night .rc-btn-line { color: #4FB8EC; }
.ev-panthers.ev-night .rc-btn-line:hover { background: #141E28; color: #fff; }
.ev-panthers.ev-night .rc-btn:hover { background: #fff; border-color: #fff; color: #101820; }
.ev-panthers.ev-night .rc-map { background: #0F1821; }
.ev-panthers.ev-night .us-nation { fill: #1A2733; stroke: #4E6476; }
.ev-panthers.ev-night .us-states { stroke: #2A3A48; }
.ev-panthers.ev-night .pin.on circle { stroke: #fff; }
.ev-panthers.ev-night .ev-field { opacity: .22; }
.ev-panthers.ev-night .ev-ball span { color: #A0683A; }
.ev-panthers.ev-night .rc-top::after { background: linear-gradient(180deg, #0085CA 0 4px, #000 4px 7px, #BFC0BF 7px 10px); }
.ev-panthers.ev-night .ts-score.r-L { background: #F2F5F7; color: #101820; }
.ev-panthers.ev-night .ts-game.home { background: linear-gradient(90deg, rgba(0,133,202,.22), rgba(0,133,202,0) 60%); }
.ev-panthers.ev-night .rc-yr[aria-pressed="true"] .bar { background: #fff; }
.ev-panthers .ev-switch { border-color: #0085CA; }
.ev-panthers .ev-switch button[aria-pressed="true"] { background: #0085CA; color: #fff; }
.ev-panthers.ev-night .rc-ps-input, .ev-panthers.ev-night .rc-ps-fixed, .ev-panthers.ev-night .rc-ps-list, .ev-panthers.ev-night .rc-chip,
.ev-panthers.ev-night .rc-dialog, .ev-panthers.ev-night .rc-sheet { background: #0F1821; color: var(--ink); border-color: #3A4E60; }
.ev-panthers.ev-night .rc-ps-opt:hover, .ev-panthers.ev-night .rc-ps-opt.on { background: #13273A; }
.ev-panthers.ev-night .rc-goal span { background: var(--card); }
/* RJ 2026-10-28: the contribute button says Add your photos, with the football */
.ev-panthers .rc-go-photos::before { content: "🏈"; font-style: normal; margin-right: 10px; }
.rc-go-photos { white-space: nowrap; }
/* a stadium's progress toward 1,000 */
.ts-venue .ts-vline { display: block; }
.ts-prog { display: block; height: 12px; border-radius: 6px; background: var(--stub); margin: 8px 0 4px; overflow: hidden; }
.ts-prog i { display: block; height: 100%; min-width: 4px; background: #0085CA; border-radius: 6px; }
.ts-pnum { font-size: 11px; color: var(--muted); letter-spacing: .06em; font-weight: 400; }
.ev-panthers.ev-night .pin:not(.full) circle { fill: #141E28; }

/* =====================================================================
   TEXAS A&M THEME (RJ 2026-10-28: "just like what you built for the panthers ... geared towards Texas A&M
   football"; look "yep"). races.js sets BOTH .ev-panthers (the shared team layout: fonts, scoreboard tiles,
   yard lines, season list, stadium map) and .ev-aggies (these colors). Official colors, marcomm.tamu.edu:
   Aggie Maroon #500000 · White #FFFFFF · grays #202020 #3E3E3E #707070 #D1D1D1 #D6D3C4 · accents #3C0000 #732F2F.
   No ATM logo, no mascot, no "12th Man". .ev-aggies = Game Day (light, default); + .ev-night = Maroon Out.
   ===================================================================== */
body.ev-panthers.ev-aggies {
  --bg: #F7F6F2; --card: #FFFFFF; --ink: #202020; --muted: #5A5654; --line: #D6D3C4;
  --orange: #500000; --fill: #500000; --green: #2E6B3A; --stub: #D6D3C4; --purple: #202020;
  background: linear-gradient(180deg, #ECE9E0 0, rgba(236,233,224,0) 520px), var(--bg);
}
.ev-aggies.ev-panthers h1 { text-shadow: 4px 4px 0 #D6D3C4; color: #500000; }
.ev-aggies.ev-panthers .rc-eyebrow, .ev-aggies .ts-sep { color: #500000; }
.ev-aggies.ev-panthers .rc-date { background: #500000; border-left-color: #D6D3C4; }
.ev-aggies.ev-panthers .rc-top::after { background: linear-gradient(180deg, #500000 0 4px, #FFFFFF 4px 6px, #500000 6px 10px); }
.ev-aggies.ev-panthers .rc-btn { background: #500000; border-color: #500000; }
.ev-aggies.ev-panthers .rc-btn:hover { background: #3C0000; border-color: #3C0000; }
.ev-aggies.ev-panthers .rc-btn.rc-btn-line, .ev-aggies.ev-panthers .rc-btn-line { background: transparent; color: #500000; border-color: #500000; }
.ev-aggies.ev-panthers .rc-btn.rc-btn-line:hover { background: #FFFFFF; color: #3C0000; }
.ev-aggies.ev-panthers .rc-clubcall { background: #F1E6E6; color: #202020; }
.ev-aggies.ev-panthers .rc-pick { border-color: #202020; box-shadow: 6px 6px 0 #500000; }
.ev-aggies.ev-panthers .rc-tile { background: #202020; border-bottom-color: #500000; }
.ev-aggies.ev-panthers .rc-tile b { text-shadow: 0 0 10px rgba(115,47,47,.9); }
.ev-aggies.ev-panthers .rc-tile span { color: #D6D3C4; }
.ev-aggies.ev-panthers .rc-yr .bar { background: linear-gradient(180deg, #500000 0%, #500000 70%, #3C0000 100%); }
.ev-aggies.ev-panthers .rc-yr[aria-pressed="true"] .bar { background: #202020; box-shadow: 0 0 0 3px #500000; }
.ev-aggies.ev-panthers .rc-yr.next .bar { border-color: #500000; }
.ev-aggies.ev-panthers .rc-map { background: #F1EFE8; }
.ev-aggies .ev-field i, .ev-aggies .ev-field i::before, .ev-aggies .ev-field i::after { border-color: #D1D1D1; }
.ev-aggies .ev-field b { color: #D1D1D1; }
.ev-aggies .ts-game.home { background: linear-gradient(90deg, rgba(80,0,0,.07), rgba(80,0,0,0) 60%); }
.ev-aggies .ts-score { color: #202020; }
.ev-aggies .ts-score.r-W { background: #500000; color: #fff; }
.ev-aggies .ts-score.r-L { background: #202020; color: #fff; }
.ev-aggies .ts-prog i { background: #500000; }
.ev-aggies .pin.on circle { stroke: #202020; }
.ev-aggies.ev-panthers .ev-switch { border-color: #500000; }
.ev-aggies.ev-panthers .ev-switch button[aria-pressed="true"] { background: #500000; color: #fff; }
/* MAROON OUT: the dark look (a visitor's choice, never the default) */
body.ev-panthers.ev-aggies.ev-night {
  --bg: #2A0606; --card: #3C0000; --ink: #FFFFFF; --muted: #E3D3D3; --line: #6A2A2A;
  --orange: #F0C9C9; --fill: #FFFFFF; --green: #9FE0AE; --stub: #5A1A1A; --purple: #FFFFFF;
  background: radial-gradient(900px 420px at 80% -80px, rgba(115,47,47,.55) 0%, rgba(115,47,47,0) 70%), var(--bg);
}
.ev-aggies.ev-panthers.ev-night h1 { color: #fff; text-shadow: 4px 4px 0 #732F2F; }
.ev-aggies.ev-panthers.ev-night .rc-eyebrow, .ev-aggies.ev-night .ts-sep { color: #F0C9C9; }
.ev-aggies.ev-panthers.ev-night .rc-date { background: #FFFFFF; color: #500000; border-left-color: #732F2F; }
.ev-aggies.ev-panthers.ev-night .rc-top::after { background: linear-gradient(180deg, #FFFFFF 0 3px, #732F2F 3px 6px, #FFFFFF 6px 10px); }
.ev-aggies.ev-panthers.ev-night .rc-btn { background: #FFFFFF; border-color: #FFFFFF; color: #500000; }
.ev-aggies.ev-panthers.ev-night .rc-btn:hover { background: #F0C9C9; border-color: #F0C9C9; color: #3C0000; }
.ev-aggies.ev-panthers.ev-night .rc-btn.rc-btn-line, .ev-aggies.ev-panthers.ev-night .rc-btn-line { background: transparent; color: #FFFFFF; border-color: #FFFFFF; }
.ev-aggies.ev-panthers.ev-night .rc-btn.rc-btn-line:hover { background: #3C0000; color: #fff; }
.ev-aggies.ev-panthers.ev-night .rc-clubcall { background: #4A0E0E; color: #fff; }
.ev-aggies.ev-panthers.ev-night .rc-pick { border-color: #D6D3C4; box-shadow: 6px 6px 0 #732F2F; }
.ev-aggies.ev-panthers.ev-night .rc-tile { background: #1A0000; border-bottom-color: #732F2F; }
.ev-aggies.ev-panthers.ev-night .rc-yr .bar { background: linear-gradient(180deg, #FFFFFF 0%, #F0C9C9 100%); }
.ev-aggies.ev-panthers.ev-night .rc-yr[aria-pressed="true"] .bar { background: #F0C9C9; box-shadow: 0 0 0 3px #FFFFFF; }
.ev-aggies.ev-panthers.ev-night .rc-map { background: #330303; }
.ev-aggies.ev-panthers.ev-night .us-nation { fill: #4A0E0E; stroke: #A06A6A; }
.ev-aggies.ev-panthers.ev-night .us-states { stroke: #6A2A2A; }
.ev-aggies.ev-panthers.ev-night .pin.on circle { stroke: #fff; }
.ev-aggies.ev-panthers.ev-night .pin:not(.full) circle { fill: #3C0000; }
.ev-aggies.ev-night .ts-game.home { background: linear-gradient(90deg, rgba(255,255,255,.10), rgba(255,255,255,0) 60%); }
.ev-aggies.ev-night .ts-score { background: #5A1A1A; color: #fff; }
.ev-aggies.ev-night .ts-score.r-W { background: #FFFFFF; color: #500000; }
.ev-aggies.ev-night .ts-score.r-L { background: #1A0000; color: #fff; }
.ev-aggies.ev-night .ts-prog i { background: #FFFFFF; }
.ev-aggies.ev-panthers.ev-night .ev-switch { border-color: #FFFFFF; }
.ev-aggies.ev-panthers.ev-night .ev-switch button[aria-pressed="true"] { background: #FFFFFF; color: #500000; }
.ev-aggies.ev-panthers.ev-night .rc-ps-input, .ev-aggies.ev-panthers.ev-night .rc-ps-fixed, .ev-aggies.ev-panthers.ev-night .rc-ps-list, .ev-aggies.ev-panthers.ev-night .rc-chip,
.ev-aggies.ev-panthers.ev-night .rc-dialog, .ev-aggies.ev-panthers.ev-night .rc-sheet { background: #330303; color: var(--ink); border-color: #6A2A2A; }
.ev-aggies.ev-panthers.ev-night .rc-ps-opt:hover, .ev-aggies.ev-panthers.ev-night .rc-ps-opt.on { background: #4A0E0E; }

/* =====================================================================
   INFINITY FESTIVAL THEME (RJ 2026-10-29: "its fine, it is their approach, match it"). races.js sets BOTH
   .ev-panthers (the shared layout: season/day list, tiles, switch) and .ev-infinity (these colors). Read from
   infinityfestival.com: black #000000 · white #FFFFFF · hot pink #FF0090 (Register) · gray #C0C4C3. Their display
   face (Neue Haas Grotesk Display) is paid, so Inter Tight stands in. No logos, no sponsor marks.
   .ev-infinity.ev-night = "Infinity" (their black, the DEFAULT on this page by RJ's ruling); plain = "Daylight".
   ===================================================================== */
body.ev-panthers.ev-infinity {
  --bg: #FFFFFF; --card: #FFFFFF; --ink: #000000; --muted: #4A4D4C; --line: #D9DCDB;
  --orange: #C8006F; --fill: #FF0090; --green: #C8006F; --stub: #E6E8E7; --purple: #000000;
  background: var(--bg);
  font-family: "Inter Tight", "Helvetica Neue", Arial, sans-serif;
}
.ev-infinity.ev-panthers h1, .ev-infinity.ev-panthers .rc-h3, .ev-infinity.ev-panthers .ts-title, .ev-infinity .rc-h2 {
  font-family: "Inter Tight", "Helvetica Neue", Arial, sans-serif; font-style: normal; font-weight: 800; text-transform: none; letter-spacing: -.035em; }
.ev-infinity.ev-panthers h1 { font-size: clamp(44px, 9vw, 96px); line-height: .95; color: var(--ink); text-shadow: none; }
.ev-infinity.ev-panthers .rc-h3 { font-size: 30px; }
.ev-infinity.ev-panthers .ts-title { font-size: 30px; }
.ev-infinity.ev-panthers .rc-eyebrow, .ev-infinity .ts-sep { color: var(--orange); font-family: "Inter Tight", Arial, sans-serif; letter-spacing: .08em; }
.ev-infinity.ev-panthers .rc-date { background: transparent; color: var(--ink); padding: 0; border-left: 0; font-weight: 700; font-size: 20px; letter-spacing: -.01em; }
.ev-infinity.ev-panthers .rc-top::after { height: 1px; bottom: -1px; background: var(--ink); }
.ev-infinity.ev-panthers .rc-btn { background: #FF0090; border-color: #FF0090; color: #FFFFFF; border-radius: 10px 10px 10px 0; text-transform: uppercase; letter-spacing: .01em; }
.ev-infinity.ev-panthers .rc-btn::after { content: "›"; margin-left: 10px; font-weight: 800; }
.ev-infinity.ev-panthers .rc-btn:hover { background: #000000; border-color: #000000; color: #fff; }
.ev-infinity.ev-panthers .rc-btn.rc-btn-line, .ev-infinity.ev-panthers .rc-btn-line { background: transparent; color: var(--ink); border-color: var(--ink); }
.ev-infinity.ev-panthers .rc-btn.rc-btn-line:hover { background: var(--ink); color: var(--bg); }
.ev-infinity.ev-panthers .rc-cta-band .rc-btn::before, .ev-infinity.ev-panthers #rr-add::before, .ev-infinity.ev-panthers .rc-go-photos::before { content: none; }
.ev-infinity.ev-panthers .rc-clubcall { background: #FFE3F2; color: #000; }
.ev-infinity.ev-panthers .rc-pick { border: 1px solid var(--ink); box-shadow: 8px 8px 0 #FF0090; border-radius: 12px; }
.ev-infinity.ev-panthers .rc-tile { background: #000; border: 0; border-top: 1px solid #FF0090; border-radius: 0; }
.ev-infinity.ev-panthers .rc-tile b { font-family: "Inter Tight", Arial, sans-serif; font-weight: 800; color: #fff; text-shadow: none; letter-spacing: -.03em; }
.ev-infinity.ev-panthers .rc-tile span { color: #C0C4C3; }
.ev-infinity.ev-panthers .rc-panel { border: 1px solid var(--line); }
.ev-infinity.ev-panthers .rc-yr .bar { background: linear-gradient(180deg, #FF0090 0%, #FF0090 65%, #7A0045 100%); }
.ev-infinity.ev-panthers .rc-yr[aria-pressed="true"] .bar { background: var(--ink); box-shadow: 0 0 0 3px #FF0090; }
.ev-infinity.ev-panthers .rc-yr.next .bar { background: transparent; border-color: #FF0090; }
.ev-infinity.ev-panthers .rc-map { background: #F4F5F5; }
.ev-infinity .ts-game.home { background: none; }
.ev-infinity .ts-score { background: var(--stub); color: var(--ink); }
.ev-infinity .ts-score.r-W { background: #FF0090; color: #fff; }
.ev-infinity .ts-prog i { background: #FF0090; }
.ev-infinity.ev-panthers .ev-switch { border-color: var(--ink); }
.ev-infinity.ev-panthers .ev-switch button[aria-pressed="true"] { background: #FF0090; color: #fff; }
.ev-infinity .fv-lab { font-family: "Inter Tight", Arial, sans-serif; font-weight: 700; font-size: 20px; letter-spacing: 0; }
.ev-infinity .pin.on .fv-area { fill-opacity: .3; stroke-width: 4; }
.ev-infinity.ev-panthers .rc-btn, .ev-infinity .fv-btn { font-style: normal; }
.ev-infinity.ev-panthers .rc-date { font-family: "Inter Tight", Arial, sans-serif; }
.ev-infinity .pin.fv circle.fv-area, .ev-infinity.ev-night .pin.fv:not(.full) circle.fv-area { fill: #FF0090; stroke: #FF0090; }
.ev-infinity .pin.fv circle:not(.fv-area), .ev-infinity.ev-night .pin.fv:not(.full) circle:not(.fv-area) { fill: #FF0090; stroke: none; }
.ev-infinity .pin.fv:hover circle, .ev-infinity .pin.fv:focus circle, .ev-infinity .pin.fv.on circle { transform: none; }
.ev-infinity .pin.fv:focus-visible circle.fv-area { stroke-width: 5; }
/* the venue key under the map */
.fv-key { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; }
.fv-btn { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 1px; min-height: 44px; padding: 6px 12px; border: 1px solid var(--line);
  border-radius: 10px 10px 10px 0; background: var(--card); color: var(--ink); font: inherit; font-size: 13px; text-align: left; cursor: pointer; max-width: 100%; }
.fv-btn b { font-size: 12px; color: var(--orange); }
.fv-btn span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 260px; }
.fv-btn[aria-pressed="true"] { border-color: #FF0090; box-shadow: inset 0 0 0 1px #FF0090; }
.fv-btn:focus-visible { outline: 3px solid #FF0090; outline-offset: 2px; }
/* the light field: two sweeps of dots behind the hero (pictures only) */
.ev-particles { inset: 0; overflow: hidden; pointer-events: none; }
.ev-particles i { position: absolute; display: block; width: 900px; height: 520px; right: -260px; top: -60px; border-radius: 50%;
  background: radial-gradient(circle, #FF0090 1.4px, transparent 1.9px) 0 0 / 13px 13px;
  -webkit-mask: radial-gradient(closest-side, transparent 52%, #000 56%, #000 64%, transparent 80%); mask: radial-gradient(closest-side, transparent 52%, #000 56%, #000 64%, transparent 80%);
  transform: rotate(-18deg) scaleY(.55); opacity: .55; animation: ev-drift 18s ease-in-out infinite alternate; }
.ev-particles i + i { right: -140px; top: 40px; width: 760px; height: 440px; opacity: .3; background-size: 9px 9px; animation-duration: 24s; transform: rotate(-30deg) scaleY(.5); }
@keyframes ev-drift { from { margin-top: 0; } to { margin-top: 26px; } }
@media (prefers-reduced-motion: reduce) { .ev-particles i { animation: none; } }
@media (max-width: 640px) { .ev-particles i { width: 600px; height: 360px; right: -280px; } .ev-particles i + i { display: none; } }
/* INFINITY: their black (the default here) */
body.ev-panthers.ev-infinity.ev-night {
  --bg: #000000; --card: #0E0E0E; --ink: #FFFFFF; --muted: #C0C4C3; --line: #2C2C2C;
  --orange: #FF4FB0; --fill: #FF0090; --green: #FF4FB0; --stub: #262626; --purple: #FFFFFF;
  background: var(--bg);
}
.ev-infinity.ev-panthers.ev-night h1, .ev-infinity.ev-panthers.ev-night .rc-h3, .ev-infinity.ev-panthers.ev-night .ts-title { color: #fff; text-shadow: none; }
.ev-infinity.ev-panthers.ev-night .rc-date { background: transparent; color: #fff; }
.ev-infinity.ev-panthers.ev-night .rc-top::after { background: #fff; }
.ev-infinity.ev-panthers.ev-night .rc-btn:hover { background: #fff; border-color: #fff; color: #000; }
.ev-infinity.ev-panthers.ev-night .rc-btn.rc-btn-line, .ev-infinity.ev-panthers.ev-night .rc-btn-line { color: #fff; border-color: #fff; }
.ev-infinity.ev-panthers.ev-night .rc-btn.rc-btn-line:hover { background: #fff; color: #000; }
.ev-infinity.ev-panthers.ev-night .rc-clubcall { background: #1A0010; color: #fff; border: 1px solid #FF0090; }
.ev-infinity.ev-panthers.ev-night .rc-pick { border-color: #fff; }
.ev-infinity.ev-panthers.ev-night .rc-tile { background: #0E0E0E; }
.ev-infinity.ev-panthers.ev-night .rc-yr[aria-pressed="true"] .bar { background: #fff; }
.ev-infinity.ev-panthers.ev-night .rc-map { background: #0B0B0B; }
.ev-infinity.ev-panthers.ev-night .ev-switch { border-color: #fff; }
.ev-infinity.ev-panthers.ev-night .ev-particles i { opacity: .8; }
.ev-infinity.ev-panthers.ev-night .ev-particles i + i { opacity: .45; }
.ev-infinity.ev-panthers.ev-night .rc-ps-input, .ev-infinity.ev-panthers.ev-night .rc-ps-fixed, .ev-infinity.ev-panthers.ev-night .rc-ps-list, .ev-infinity.ev-panthers.ev-night .rc-chip,
.ev-infinity.ev-panthers.ev-night .rc-dialog, .ev-infinity.ev-panthers.ev-night .rc-sheet { background: #0E0E0E; color: var(--ink); border-color: #3A3A3A; }
.ev-infinity.ev-panthers.ev-night .rc-ps-opt:hover, .ev-infinity.ev-panthers.ev-night .rc-ps-opt.on { background: #1A0010; }
.ev-infinity.ev-panthers.ev-night .fv-btn { background: #0E0E0E; }

/* =====================================================================
   NEW ORLEANS THEME (RJ 2026-10-30, Tales of Past Cocktails: "a french quarter look and feel, and we'll hone that
   same vibe in when we do jazzfest and mardi gras and the saints"). races.js sets BOTH .ev-panthers (the shared
   layout: day list, tiles, switch) and .ev-nola (these colors). No event's logo, colors, or marks.
   Plaster cream #F4EBDD · wrought iron #1E1B18 · shutter green #2F5D50 · old brick #B5523B · gaslight gold #C8962E ·
   Mardi Gras purple #6E4A7E (small touches). .ev-nola = "Royal Street" (light, default); + .ev-night = "Gaslight".
   ===================================================================== */
body.ev-panthers.ev-nola {
  --bg: #F4EBDD; --card: #FFFDF8; --ink: #1E1B18; --muted: #5C5148; --line: #DCCBB3;
  --orange: #B5523B; --fill: #2F5D50; --green: #2F5D50; --stub: #E6D8C2; --purple: #1E1B18;
  background: linear-gradient(180deg, #EADCC6 0, rgba(234,220,198,0) 520px), var(--bg);
}
.ev-nola.ev-panthers h1, .ev-nola.ev-panthers .rc-h3, .ev-nola.ev-panthers .ts-title, .ev-nola .rc-h2 {
  font-family: "Abril Fatface", Georgia, "Times New Roman", serif; font-style: normal; font-weight: 400; text-transform: none; letter-spacing: .005em; }
.ev-nola.ev-panthers h1 { font-size: clamp(40px, 8vw, 84px); line-height: 1.02; color: var(--ink); text-shadow: 3px 3px 0 #E2C98F; }
.ev-nola.ev-panthers .rc-eyebrow, .ev-nola .ts-sep { color: #B5523B; font-family: "Libre Baskerville", Georgia, serif; letter-spacing: .12em; font-weight: 700; }
.ev-nola.ev-panthers .rc-lede, .ev-nola.ev-panthers .rc-pick-help { font-family: "Libre Baskerville", Georgia, serif; }
.ev-nola.ev-panthers .rc-date { background: #2F5D50; color: #FFFDF8; border-left-color: #C8962E; font-family: "Libre Baskerville", Georgia, serif; }
.ev-nola.ev-panthers .rc-top::after { background: linear-gradient(180deg, #1E1B18 0 3px, #C8962E 3px 5px, #1E1B18 5px 8px); }
.ev-nola.ev-panthers .rc-btn { background: #2F5D50; border-color: #2F5D50; color: #FFFDF8; }
.ev-nola.ev-panthers .rc-btn:hover { background: #234639; border-color: #234639; }
.ev-nola.ev-panthers .rc-btn.rc-btn-line, .ev-nola.ev-panthers .rc-btn-line { background: transparent; color: #1E1B18; border-color: #1E1B18; }
.ev-nola.ev-panthers .rc-btn.rc-btn-line:hover { background: #FFFDF8; color: #2F5D50; border-color: #2F5D50; }
.ev-nola.ev-panthers .rc-clubcall { background: #EFE0F2; color: #1E1B18; border-left: 4px solid #6E4A7E; }
.ev-nola.ev-panthers .rc-pick { border-color: #1E1B18; box-shadow: 6px 6px 0 #B5523B; }
.ev-nola.ev-panthers .rc-tile { background: #1E1B18; border-bottom-color: #C8962E; }
.ev-nola.ev-panthers .rc-tile b { color: #F6DFA6; text-shadow: 0 0 12px rgba(200,150,46,.55); }
.ev-nola.ev-panthers .rc-tile span { color: #E6D8C2; }
.ev-nola.ev-panthers .rc-yr .bar { background: linear-gradient(180deg, #2F5D50 0%, #2F5D50 70%, #234639 100%); }
.ev-nola.ev-panthers .rc-yr[aria-pressed="true"] .bar { background: #B5523B; box-shadow: 0 0 0 3px #1E1B18; }
.ev-nola.ev-panthers .rc-yr.next .bar { background: transparent; border-color: #2F5D50; }
.ev-nola.ev-panthers .rc-map { background: #E9DDC8; }
.ev-nola .ts-game.home { background: none; }
.ev-nola .ts-score { background: var(--stub); color: var(--ink); }
.ev-nola .ts-score.r-W { background: #2F5D50; color: #FFFDF8; }
.ev-nola .ts-prog i { background: #2F5D50; }
.ev-nola.ev-panthers .ev-switch { border-color: #1E1B18; }
.ev-nola.ev-panthers .ev-switch button[aria-pressed="true"] { background: #1E1B18; color: #F6DFA6; }
.ev-nola .pin.fv circle.fv-area { fill: #2F5D50; stroke: #2F5D50; }
.ev-nola .pin.fv circle:not(.fv-area) { fill: #B5523B; stroke: none; }
.ev-nola .fv-lab { font-family: "Libre Baskerville", Georgia, serif; font-weight: 700; font-size: 18px; }
.ev-nola .fv-btn b { color: #B5523B; }
.ev-nola .fv-btn[aria-pressed="true"] { border-color: #2F5D50; box-shadow: inset 0 0 0 1px #2F5D50; }
/* a fleur-de-lis on the buttons instead of the football (the shared New Orleans mark; not any event's logo) */
.ev-nola.ev-panthers .rc-cta-band .rc-btn::before, .ev-nola.ev-panthers #rr-add::before, .ev-nola.ev-panthers .rc-go-photos::before { content: "⚜️"; font-style: normal; margin-right: 10px; }
/* the Bourbon Street lamp post, its glow, notes, a hurricane, and a fleur-de-lis (pictures only; RJ 2026-10-30) */
.ev-nola .rc-split { position: relative; }
/* the hero's words keep clear of the pictures on the right, ONLY when there are no photos beside them
   (RJ 2026-10-30: with photos the text was squeezed into a thin column: "awkward use of space") */
@media (min-width: 960px) { .ev-nola.ev-panthers .rc-split:has(> .rc-photos.hidden) > .rc-hero { padding-right: 300px; } }
@media (max-width: 959px) and (min-width: 641px) { .ev-nola.ev-panthers .rc-split > .rc-hero { padding-right: 190px; } }
@media (max-width: 640px) { .ev-nola.ev-panthers .rc-split > .rc-hero { padding-right: 58px; } }
/* with photos: on a computer the photos sit low in their column, under the lamp post and its friends;
   on a phone or tablet they come after the words, so the lamp stays beside the title */
@media (min-width: 960px) { .ev-nola.ev-panthers .rc-split:has(> .rc-photos:not(.hidden)) > .rc-photos { align-self: end; margin-top: 320px; } }
@media (max-width: 959px) { .ev-nola.ev-panthers .rc-split-race .rc-photos { order: 2; } }
.ev-lamppost { right: 1%; top: -6px; width: 92px; height: 306px; color: var(--ink); opacity: .9; }
.ev-lamppost svg, .ev-hurricane svg, .ev-fleur svg, .ev-notes svg { width: 100%; height: 100%; display: block; overflow: visible; }
.ev-lamp { right: 0; top: -48px; width: 170px; height: 170px; }   /* stays inside the page: no sideways scroll */
.ev-lamp i { display: block; width: 100%; height: 100%; border-radius: 50%;
  background: radial-gradient(circle, rgba(246,223,166,.9) 0, rgba(200,150,46,.4) 32%, rgba(200,150,46,0) 70%); animation: ev-flicker 5s ease-in-out infinite alternate; }
@keyframes ev-flicker { 0% { opacity: .75; } 40% { opacity: .95; } 60% { opacity: .82; } 100% { opacity: 1; } }
.ev-notes { right: calc(1% + 100px); top: 0; width: 150px; height: 120px; color: #6E4A7E; }
.ev-notes span { position: absolute; display: block; width: 26px; height: 40px; animation: ev-note 7s ease-in-out infinite; }
.ev-notes .n1 { left: 10px; top: 60px; }
.ev-notes .n2 { left: 62px; top: 22px; width: 20px; color: #B5523B; animation-delay: -2.5s; }
.ev-notes .n3 { left: 110px; top: 70px; width: 22px; height: 34px; animation-delay: -5s; }
@keyframes ev-note { 0%, 100% { transform: translateY(0) rotate(-6deg); } 50% { transform: translateY(-12px) rotate(6deg); } }
.ev-hurricane { right: calc(1% + 112px); top: 182px; width: 60px; height: 106px; color: var(--ink); transform: rotate(-8deg); }
.ev-fleur { right: calc(1% + 210px); top: 150px; width: 54px; height: 66px; color: #C8962E; opacity: .9; }
@media (prefers-reduced-motion: reduce) { .ev-lamp i, .ev-notes span { animation: none; } }
@media (max-width: 900px) { .ev-fleur, .ev-hurricane { display: none; } }
@media (max-width: 640px) {
  .ev-lamppost { width: 56px; height: 186px; right: 2px; top: 0; opacity: .55; }
  .ev-lamp { width: 100px; height: 100px; right: 0; top: -30px; }
  .ev-notes { right: 2px; top: 196px; width: 56px; height: 60px; opacity: .7; }
  .ev-notes .n1, .ev-notes .n3 { display: none; }
  .ev-notes .n2 { left: 18px; top: 0; }
}
/* the conference map (RJ 2026-10-30): squares you can click */
.cf-cell { cursor: pointer; }
.cf-cell:hover, .cf-cell:focus, .cf-cell.on { stroke: var(--ink); stroke-width: 2px; vector-effect: non-scaling-stroke; outline: none; }
.cf-mark, .cf-quarter, .cf-street, .cf-qlab { pointer-events: none; }
.cf-mlab { font-weight: 700; paint-order: stroke; stroke: var(--card); stroke-width: 3px; stroke-linejoin: round; }
/* the street map and the photo strip (RJ 2026-10-30) */
.cf-water { fill: #C9D9D6; stroke: none; }
.cf-road { fill: none; stroke: #FFFDF8; stroke-linecap: round; stroke-linejoin: round; }
.cf-road.s { stroke: #FBF6EC; } .cf-road.m { stroke: #FFFFFF; } .cf-road.b { stroke: #F3DDA7; }
.ev-nola .rc-map { background: #E9DDC8; }
.cf-credit { fill: var(--muted); }
.cf-strip { margin-top: 10px; }
.cf-strip-h { margin: 0 0 8px; font-size: 14px; color: var(--muted); }
.cf-strip-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; }
.cf-ph { margin: 0; }
.cf-ph img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 8px; display: block; background: var(--stub); }
.cf-ph figcaption { font-size: 11px; color: var(--muted); margin-top: 3px; }
/* GASLIGHT: the dark look (a visitor's choice, never the default) */
body.ev-panthers.ev-nola.ev-night {
  --bg: #16130F; --card: #221D17; --ink: #F4EBDD; --muted: #D8C9B2; --line: #463A2C;
  --orange: #E8A27F; --fill: #C8962E; --green: #9FD1BE; --stub: #3A3127; --purple: #F4EBDD;
  background: radial-gradient(900px 420px at 85% -60px, rgba(200,150,46,.35) 0%, rgba(200,150,46,0) 70%), var(--bg);
}
.ev-nola.ev-panthers.ev-night h1 { color: #F4EBDD; text-shadow: 3px 3px 0 #6B4F1E; }
.ev-nola.ev-panthers.ev-night .rc-eyebrow, .ev-nola.ev-night .ts-sep { color: #E8A27F; }
.ev-nola.ev-panthers.ev-night .rc-date { background: #C8962E; color: #16130F; border-left-color: #F4EBDD; }
.ev-nola.ev-panthers.ev-night .rc-top::after { background: linear-gradient(180deg, #C8962E 0 3px, #16130F 3px 5px, #C8962E 5px 8px); }
.ev-nola.ev-panthers.ev-night .rc-btn { background: #C8962E; border-color: #C8962E; color: #16130F; }
.ev-nola.ev-panthers.ev-night .rc-btn:hover { background: #F6DFA6; border-color: #F6DFA6; color: #16130F; }
.ev-nola.ev-panthers.ev-night .rc-btn.rc-btn-line, .ev-nola.ev-panthers.ev-night .rc-btn-line { background: transparent; color: #F4EBDD; border-color: #F4EBDD; }
.ev-nola.ev-panthers.ev-night .rc-btn.rc-btn-line:hover { background: #2C251D; color: #F6DFA6; }
.ev-nola.ev-panthers.ev-night .rc-clubcall { background: #2B2133; color: #F4EBDD; border-left-color: #B79AC3; }
.ev-nola.ev-panthers.ev-night .rc-pick { border-color: #F4EBDD; box-shadow: 6px 6px 0 #6B4F1E; }
.ev-nola.ev-panthers.ev-night .rc-tile { background: #0E0C09; }
.ev-nola.ev-panthers.ev-night .rc-yr .bar { background: linear-gradient(180deg, #F6DFA6 0%, #C8962E 100%); }
.ev-nola.ev-panthers.ev-night .rc-yr[aria-pressed="true"] .bar { background: #E8A27F; box-shadow: 0 0 0 3px #F4EBDD; }
.ev-nola.ev-panthers.ev-night .rc-map { background: #1C1813; }
.ev-nola.ev-night .cf-water { fill: #1E2B2B; } .ev-nola.ev-night .cf-road.s { stroke: #2C251D; } .ev-nola.ev-night .cf-road.m { stroke: #3A3127; } .ev-nola.ev-night .cf-road.b { stroke: #5A4A2C; }
.ev-nola.ev-night .ts-score.r-W { background: #C8962E; color: #16130F; }
.ev-nola.ev-night .ts-prog i { background: #C8962E; }
.ev-nola.ev-panthers.ev-night .ev-switch { border-color: #F4EBDD; }
.ev-nola.ev-panthers.ev-night .ev-switch button[aria-pressed="true"] { background: #C8962E; color: #16130F; }
.ev-nola.ev-night .pin.fv circle.fv-area { fill: #C8962E; stroke: #C8962E; }
.ev-nola.ev-night .pin.fv circle:not(.fv-area) { fill: #E8A27F; }
.ev-nola.ev-night .ev-notes { color: #B79AC3; }
.ev-nola.ev-night .ev-fleur { color: #F6DFA6; }
.ev-nola.ev-panthers.ev-night .rc-ps-input, .ev-nola.ev-panthers.ev-night .rc-ps-fixed, .ev-nola.ev-panthers.ev-night .rc-ps-list, .ev-nola.ev-panthers.ev-night .rc-chip,
.ev-nola.ev-panthers.ev-night .rc-dialog, .ev-nola.ev-panthers.ev-night .rc-sheet, .ev-nola.ev-panthers.ev-night .fv-btn { background: #221D17; color: var(--ink); border-color: #463A2C; }
.ev-nola.ev-panthers.ev-night .rc-ps-opt:hover, .ev-nola.ev-panthers.ev-night .rc-ps-opt.on { background: #2C251D; }

/* =====================================================================
   ART FAIR GALLERY THEME (RJ 2026-10-30, An Art Fair to Remember). Our own clean gallery look: white walls #FFFFFF,
   black type #111111, ONE accent (a red-dot "sold" sticker red #D9452B), light grey hairlines #E2E2E2, square-ish
   corners. NO fair's logo, colors, or fonts: type stays Crowd Archive's own Archivo. races.js sets BOTH .ev-panthers
   (the shared layout: year list, tiles, switch) and .ev-gallery (this look). .ev-gallery = "Gallery" (light, the
   default); + .ev-night = "After Hours" (dark, a visitor's choice). Outline buttons stay outlines in both.
   ===================================================================== */
body.ev-panthers.ev-gallery {
  --bg: #FFFFFF; --card: #FFFFFF; --ink: #111111; --muted: #5E5E5E; --line: #E2E2E2;
  --orange: #111111; --fill: #D9452B; --green: #111111; --stub: #EDEDED; --purple: #111111;
  background: var(--bg);
}
.ev-gallery.ev-panthers h1, .ev-gallery.ev-panthers .rc-h3, .ev-gallery.ev-panthers .ts-title, .ev-gallery .rc-h2 {
  font-family: "Archivo", -apple-system, system-ui, sans-serif; font-style: normal; font-weight: 800; text-transform: none; letter-spacing: -.02em; }
.ev-gallery.ev-panthers h1 { font-size: clamp(40px, 8vw, 84px); line-height: 1; color: var(--ink); text-shadow: none; }
.ev-gallery.ev-panthers .rc-h3 { font-size: 24px; }
.ev-gallery.ev-panthers .ts-title { font-size: 24px; }
.ev-gallery.ev-panthers .rc-eyebrow, .ev-gallery .ts-sep { color: var(--ink); font-weight: 700; letter-spacing: .14em; }
.ev-gallery.ev-panthers .rc-eyebrow::before { content: ""; display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: #D9452B; margin-right: 8px; vertical-align: 1px; }
.ev-gallery.ev-panthers .rc-date { background: transparent; color: var(--ink); padding: 0; border-left: 0; border-radius: 0; font-weight: 700; }
.ev-gallery.ev-panthers .rc-top::after { height: 1px; bottom: -1px; background: var(--line); }
.ev-gallery.ev-panthers .rc-btn { background: #111111; border-color: #111111; color: #FFFFFF; border-radius: 2px; font-style: normal; text-transform: none; letter-spacing: 0; }
.ev-gallery.ev-panthers .rc-btn:hover { background: #D9452B; border-color: #D9452B; color: #FFFFFF; }
.ev-gallery.ev-panthers .rc-btn.rc-btn-line, .ev-gallery.ev-panthers .rc-btn-line { background: transparent; color: #111111; border-color: #111111; }
.ev-gallery.ev-panthers .rc-btn.rc-btn-line:hover { background: #111111; color: #FFFFFF; border-color: #111111; }
/* the red dot on the buttons instead of the football (a sold sticker; nobody's logo) */
.ev-gallery.ev-panthers .rc-cta-band .rc-btn::before, .ev-gallery.ev-panthers #rr-add::before, .ev-gallery.ev-panthers .rc-go-photos::before {
  content: ""; display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: #D9452B; margin-right: 10px; }
.ev-gallery.ev-panthers .rc-pick { border: 1px solid var(--ink); box-shadow: none; border-radius: 2px; }
.ev-gallery.ev-panthers .rc-tile { background: var(--card); border: 1px solid var(--line); border-top: 3px solid var(--ink); border-radius: 0; text-align: left; }
.ev-gallery.ev-panthers .rc-tile b { font-family: "Archivo", sans-serif; font-style: normal; font-weight: 800; color: var(--ink); text-shadow: none; letter-spacing: -.02em; }
.ev-gallery.ev-panthers .rc-tile span { color: var(--muted); }
.ev-gallery.ev-panthers .rc-panel { border: 1px solid var(--line); border-radius: 2px; }
.ev-gallery.ev-panthers .rc-yr .bar { background: #D9452B; border-radius: 0; }
.ev-gallery.ev-panthers .rc-yr[aria-pressed="true"] .bar { background: var(--ink); box-shadow: none; }
.ev-gallery.ev-panthers .rc-yr.next .bar { background: transparent; border-color: #D9452B; }
.ev-gallery.ev-panthers .rc-map { background: #FAFAFA; border-radius: 2px; }
.ev-gallery .ts-game.home { background: none; }
.ev-gallery .ts-score { background: var(--stub); color: var(--ink); border-radius: 2px; }
.ev-gallery .ts-score.r-W { background: var(--stub); color: var(--ink); }
.ev-gallery .af-fair.open { box-shadow: inset 3px 0 0 #D9452B; }
.af-fair { grid-template-columns: 104px minmax(0, 1fr) auto auto; }
@media (max-width: 520px) { .af-fair { grid-template-columns: 74px minmax(0, 1fr) auto; } }
.ev-gallery .af-fair .af-gal { margin: 0; min-height: 34px; padding: 4px 12px; font-size: 13px; }
.ev-gallery .ts-prog i { background: #D9452B; }
.ev-gallery.ev-panthers .ev-switch { border-color: var(--ink); border-radius: 2px; }
.ev-gallery.ev-panthers .ev-switch button[aria-pressed="true"] { background: var(--ink); color: var(--bg); }
.ev-gallery .pin.fv circle.fv-area, .ev-gallery.ev-night .pin.fv:not(.full) circle.fv-area { fill: #D9452B; stroke: #D9452B; }
.ev-gallery .pin.fv circle:not(.fv-area), .ev-gallery.ev-night .pin.fv:not(.full) circle:not(.fv-area) { fill: #D9452B; stroke: none; }
.ev-gallery .pin.fv:hover circle, .ev-gallery .pin.fv:focus circle, .ev-gallery .pin.fv.on circle { transform: none; }
.ev-gallery .pin.on .fv-area { fill-opacity: .3; stroke-width: 4; }
.ev-gallery .fv-lab { font-family: "Archivo", sans-serif; font-weight: 700; font-size: 18px; letter-spacing: 0; }
.ev-gallery .fv-btn { border-radius: 2px; }
.ev-gallery .fv-btn b { color: var(--ink); }
.ev-gallery .fv-btn[aria-pressed="true"] { border-color: #D9452B; box-shadow: inset 0 0 0 1px #D9452B; }
.ev-gallery .fv-btn:focus-visible { outline-color: #D9452B; }
/* the city switch on top of the page */
.af-cities { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 6px; }
.af-city { min-height: 36px; padding: 6px 12px; border: 1px solid var(--ink); border-radius: 2px; background: transparent; color: var(--ink); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.af-city:hover { box-shadow: inset 0 -2px 0 #D9452B; }
.af-city[aria-pressed="true"] { background: var(--ink); color: var(--bg); }
.af-city:focus-visible, .af-cityrow:focus-visible { outline: 3px solid #D9452B; outline-offset: 2px; }
/* "All cities": the cities as a list in the map panel */
.af-citylist { list-style: none; margin: 0; padding: 0; }
.af-cityrow { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px; width: 100%; padding: 12px 6px; border: 0; border-bottom: 1px solid var(--line);
  background: transparent; color: var(--ink); font: inherit; text-align: left; cursor: pointer; }
.af-cityrow b { font-size: 18px; }
.af-cityrow span { font-size: 12px; color: var(--muted); letter-spacing: .04em; }
.af-cityrow:hover b::after { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #D9452B; margin-left: 8px; vertical-align: 3px; }
/* one red dot by the title (a picture only) */
.ev-gallery .rc-split { position: relative; }
.ev-reddot { right: 2%; top: 22px; width: 26px; height: 26px; }
.ev-reddot i { display: block; width: 100%; height: 100%; border-radius: 50%; background: #D9452B; }
@media (max-width: 640px) { .ev-reddot { display: none; } }
/* AFTER HOURS: the dark look (a visitor's choice, never the default) */
body.ev-panthers.ev-gallery.ev-night {
  --bg: #111111; --card: #1A1A1A; --ink: #F5F5F5; --muted: #B3B3B3; --line: #333333;
  --orange: #F5F5F5; --fill: #D9452B; --green: #F5F5F5; --stub: #2A2A2A; --purple: #F5F5F5;
  background: var(--bg);
}
.ev-gallery.ev-panthers.ev-night h1, .ev-gallery.ev-panthers.ev-night .rc-h3, .ev-gallery.ev-panthers.ev-night .ts-title { color: var(--ink); text-shadow: none; }
.ev-gallery.ev-panthers.ev-night .rc-eyebrow, .ev-gallery.ev-night .ts-sep { color: var(--ink); }
.ev-gallery.ev-panthers.ev-night .rc-date { background: transparent; color: var(--ink); }
.ev-gallery.ev-panthers.ev-night .rc-top::after { background: var(--line); }
.ev-gallery.ev-panthers.ev-night .rc-btn { background: #F5F5F5; border-color: #F5F5F5; color: #111111; }
.ev-gallery.ev-panthers.ev-night .rc-btn:hover { background: #D9452B; border-color: #D9452B; color: #FFFFFF; }
.ev-gallery.ev-panthers.ev-night .rc-btn.rc-btn-line, .ev-gallery.ev-panthers.ev-night .rc-btn-line { background: transparent; color: #F5F5F5; border-color: #F5F5F5; }
.ev-gallery.ev-panthers.ev-night .rc-btn.rc-btn-line:hover { background: #F5F5F5; color: #111111; }
.ev-gallery.ev-panthers.ev-night .rc-pick { border-color: var(--ink); box-shadow: none; }
.ev-gallery.ev-panthers.ev-night .rc-tile { background: var(--card); border-color: var(--line); border-top-color: var(--ink); }
.ev-gallery.ev-panthers.ev-night .rc-yr[aria-pressed="true"] .bar { background: var(--ink); }
.ev-gallery.ev-panthers.ev-night .rc-map { background: #161616; }
.ev-gallery.ev-panthers.ev-night .ev-switch { border-color: var(--ink); }
.ev-gallery.ev-panthers.ev-night .rc-ps-input, .ev-gallery.ev-panthers.ev-night .rc-ps-fixed, .ev-gallery.ev-panthers.ev-night .rc-ps-list, .ev-gallery.ev-panthers.ev-night .rc-chip,
.ev-gallery.ev-panthers.ev-night .rc-dialog, .ev-gallery.ev-panthers.ev-night .rc-sheet, .ev-gallery.ev-panthers.ev-night .fv-btn { background: var(--card); color: var(--ink); border-color: #444444; }
.ev-gallery.ev-panthers.ev-night .rc-ps-opt:hover, .ev-gallery.ev-panthers.ev-night .rc-ps-opt.on { background: #262626; }

/* THE SITE FRAME (RJ 2026-10-28: "always have to have that frame work"): crowdarchive.com links top and bottom */
.rc-top nav { align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.rc-site { display: inline-flex; gap: 16px; flex-wrap: wrap; }
.rc-brand { cursor: pointer; }
@media (max-width: 760px) {
  .rc-top { flex-wrap: wrap; }
  .rc-site { order: 9; width: 100%; justify-content: flex-start; gap: 6px 14px; font-size: 13px; padding-top: 6px; }
  .rc-top nav { width: 100%; justify-content: space-between; }
}
.rc-sitefoot { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; margin: 26px 0 8px; padding-top: 18px; border-top: 1px solid var(--line); }
.rc-sitefoot div { display: flex; flex-direction: column; gap: 6px; }
.rc-sitefoot a { color: var(--ink); text-decoration: none; font-size: 14px; }
.rc-sitefoot a:hover { text-decoration: underline; }
.rc-sf-h { margin: 0 0 4px; font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); font-weight: 700; }
.rc-copy { font-size: 13px; color: var(--muted); margin-top: 14px; }
@media (max-width: 640px) { .rc-sitefoot { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* SCAN ON MY IPHONE INSTEAD (RJ 2026-10-29) */
.rc-pickgo .rc-pick-iphone { margin-top: 10px; font-size: 16px; padding-block: 12px; }
.rc-iphone-msg { margin: 12px 0 0; padding: 12px 16px; border-radius: 12px; background: #FFF4E5; border: 2px solid #F2A93B; color: #1B1B1B; text-align: left; }
.rc-iphone-msg p { margin: 0 0 4px; }
.rc-iphone-msg p:last-child { margin: 0; }
.rc-iphone-msg .rc-iphone-h { font-weight: 800; }
.rc-iphone-msg.rc-err { background: #FBF2F2; border-color: #9E2E3E; }
