/* Round 32: key entry moments — homepage strip, global banner + nav dot, race-page callout, calendar today/week rows.
   Blue = opening / open now; results use the neutral ink accent; closings neutral; red is never used here. */
.km{margin:22px 0 4px;max-width:1080px;border:1px solid rgba(242,242,245,.22);border-radius:16px;background:rgba(11,11,14,.84);padding:16px 18px}
.km-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}
.km-top h2{margin:0;font:700 26px/1.1 var(--disp,inherit);letter-spacing:.01em;text-transform:uppercase;color:var(--ink)}
.km-all,.km-more{color:var(--blue-hi);font-size:14px;text-decoration:none;white-space:nowrap}
.km-more{display:inline-block;margin-top:8px}
.km-sub{margin:14px 0 6px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.km-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.km-row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:rgba(242,242,245,.03)}
.km-n{display:grid;gap:2px;color:var(--ink);text-decoration:none;min-width:0}
.km-n b{font-weight:600;font-size:15px}
.km-n small{color:var(--muted);font-size:13px}
.km-h{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.km-open .km-h{color:var(--blue-hi)}
.km-results .km-h{color:var(--ink)}
.km-big{padding:16px;border-width:1px}
.km-big .km-n b{font-size:21px;line-height:1.2}
.km-big .km-h{font-size:14px}
.km-big.km-results{border-color:rgba(242,242,245,.55);background:rgba(242,242,245,.08)}
.km-big.km-open{border-color:rgba(111,128,255,.6);background:var(--blue-soft)}
.km-big.km-close{border-color:rgba(242,242,245,.35)}
.km-act{flex:none;display:inline-flex;align-items:center;gap:4px;padding:9px 14px;border-radius:999px;font:600 14px/1 var(--sans,inherit);text-decoration:none;cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--ink);white-space:nowrap}
.km-go{background:var(--blue);border-color:var(--blue);color:#fff}
.km-res{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.km-cal:hover,.km-act:focus-visible{border-color:var(--blue-hi)}
@media (max-width:760px){.km{padding:14px}.km-top h2{font-size:22px}.km-row{flex-wrap:wrap}.km-big .km-n b{font-size:18px}.km-act{padding:10px 14px}}
/* Global banner (all pages) on days with a 'today' moment */
.km-banner{display:flex;align-items:center;gap:10px;padding:8px max(20px,calc((100vw - 1240px)/2));background:#16161c;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink)}
.km-banner a{color:var(--ink);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.km-banner a:hover b,.km-banner a:focus-visible b{text-decoration:underline}
.km-banner em{font-style:normal;color:var(--muted)}
.km-b-dot,.km-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ink);flex:none;box-shadow:0 0 0 3px rgba(242,242,245,.16)}
.km-b-open .km-b-dot{background:var(--blue-hi);box-shadow:0 0 0 3px rgba(111,128,255,.25)}
a[data-section="open"]{position:relative}
.km-dot{position:absolute;top:6px;right:4px;width:7px;height:7px;background:var(--blue-hi);box-shadow:0 0 0 2px var(--bg)}
/* Race page callout */
.km-callout{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 14px;padding:14px 16px;border-radius:14px;border:1px solid rgba(242,242,245,.5);background:rgba(242,242,245,.08)}
.km-callout.km-open{border-color:rgba(111,128,255,.6);background:var(--blue-soft)}
.km-callout b{font-size:18px;color:var(--ink);flex:1 1 220px}
.km-callout .km-h{font-size:13px}
/* Entry calendar: today and this week */
.ec-row.ec-today{background:rgba(242,242,245,.08);border-radius:10px;box-shadow:inset 3px 0 0 var(--ink)}
.ec-row.ec-wk{box-shadow:inset 3px 0 0 rgba(111,128,255,.55)}
.ec-row .ec-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:var(--ink);color:var(--bg)}
.ec-row.ec-wk .ec-tag{background:var(--blue-soft);color:var(--blue-hi)}
/* Round 33: results / opens / closes today, impossible to miss.
   Accent per moment: results = mint, opens = blue (open), closes = amber. Never the sold-out colour. */
:root{--km-res:#3fe0c0;--km-close:#f2c46d}
.km-results{--km-a:var(--km-res)}.km-open{--km-a:var(--blue-hi)}.km-close{--km-a:var(--km-close)}
.km-hero{display:grid;gap:12px;margin:0 0 30px;max-width:1080px;position:relative;z-index:2}
.km-hc{display:grid;gap:10px;padding:22px 24px;border-radius:18px;border:2px solid var(--km-a);background:color-mix(in srgb,var(--km-a) 14%,rgba(11,11,14,.9));box-shadow:0 0 0 6px color-mix(in srgb,var(--km-a) 12%,transparent),0 18px 50px rgba(0,0,0,.45)}
.km-hc-eye{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--km-a)}
.km-hc-eye i{width:10px;height:10px;border-radius:50%;background:var(--km-a);animation:kmPulse 1.6s ease-out infinite}
.km-hc-t{margin:0;font:400 clamp(34px,5.2vw,64px)/.95 var(--disp);text-transform:uppercase;color:var(--ink);letter-spacing:.005em}
.km-hc-note{margin:0;color:var(--ink);opacity:.85;font-size:16px}
.km-hc-acts{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:4px}
.km-hc-btn{display:inline-flex;align-items:center;gap:6px;padding:15px 26px;border-radius:999px;border:0;background:var(--km-a);color:#0b0b0e;font:700 17px/1 var(--sans);text-decoration:none;cursor:pointer;white-space:nowrap}
.km-open .km-hc-btn{color:#fff;background:var(--blue)}
.km-hc-btn:hover{filter:brightness(1.08)}
.km-hc-2{color:var(--ink);font-size:15px;font-weight:600;text-decoration:underline;text-underline-offset:4px}
@keyframes kmPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--km-a) 70%,transparent)}100%{box-shadow:0 0 0 12px transparent}}
@media (max-width:760px){.km-hc{padding:18px}.km-hc-t{font-size:clamp(30px,9.4vw,44px)}.km-hc-btn{width:100%;justify-content:center;padding:16px 20px}}
/* Sticky site-wide banner under the header */
.km-banner{position:sticky;top:64px;z-index:39;display:block;padding:0;background:var(--km-a);border:0;color:#0b0b0e;font-size:16px}
.km-b-open.km-banner{--km-a:var(--blue)}.km-b-results.km-banner{--km-a:var(--km-res)}.km-b-close.km-banner{--km-a:var(--km-close)}
.km-b-in{display:flex;align-items:center;gap:14px;min-height:56px;padding:8px max(20px,calc((100vw - 1240px)/2))}
.km-banner a.km-b-t{flex:1 1 auto;min-width:0;color:inherit;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.km-banner a.km-b-t b{text-transform:uppercase;letter-spacing:.12em;font-size:13px;margin-right:6px}
.km-banner .km-b-dot{background:#0b0b0e;box-shadow:none;animation:kmPulse 1.6s ease-out infinite;--km-a:#0b0b0e}
.km-b-more{color:inherit;font-size:14px;white-space:nowrap}
.km-b-cta{flex:none;padding:10px 18px;border-radius:999px;background:#0b0b0e;color:#fff;font-weight:700;font-size:15px;text-decoration:none;white-space:nowrap}
.km-b-x{flex:none;width:36px;height:36px;border-radius:50%;border:1px solid rgba(11,11,14,.35);background:transparent;color:inherit;font-size:20px;line-height:1;cursor:pointer}
.km-b-open{color:#fff}.km-b-open .km-b-dot{background:#fff}.km-b-open .km-b-cta{background:#fff;color:#0b0b0e}.km-b-open .km-b-x{border-color:rgba(255,255,255,.4)}
@media (max-width:760px){.km-banner{top:56px;font-size:15px}.km-b-in{gap:10px;min-height:60px;flex-wrap:wrap;padding:10px 16px}.km-banner a.km-b-t{flex:1 1 100%;white-space:normal}.km-b-cta{flex:1 1 auto;text-align:center}}
/* Nav: today's count on Entry windows */
header nav a[data-section="open"] b.km-count,a[data-section="open"] b.km-count{position:absolute;top:-6px;right:-14px;min-width:18px;height:18px;padding:0 5px!important;margin:0!important;border:0!important;border-radius:9px;background:var(--km-res)!important;color:#0b0b0e!important;font:700 11px/18px var(--sans);text-align:center;letter-spacing:0;--km-a:var(--km-res);animation:kmPulse 1.6s ease-out infinite}
/* Card pill + race-page callout */
.km-pill{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;background:var(--km-a);color:#0b0b0e;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-right:6px}
.km-pill.km-open{color:#fff;background:var(--blue)}
.km-callout{display:grid;gap:8px;padding:20px 22px;border:2px solid var(--km-a);background:color-mix(in srgb,var(--km-a) 13%,var(--bg));border-radius:16px}
.km-callout.km-open{border-color:var(--km-a);background:color-mix(in srgb,var(--km-a) 13%,var(--bg))}
.km-callout .km-co-t{font:400 clamp(28px,4vw,46px)/.95 var(--disp);text-transform:uppercase;color:var(--ink)}
.km-callout small{color:var(--muted);font-size:14px}
.km-callout .km-hc-btn{justify-self:start}
@media (max-width:760px){.km-callout .km-hc-btn{justify-self:stretch;justify-content:center}}
@media (prefers-reduced-motion:reduce){.km-hc-eye i,.km-b-dot,b.km-count{animation:none}}
@media (min-width:761px){header nav a[data-section="open"] b.km-count{top:-9px;right:-22px}}
@media (max-width:760px){.km-banner .km-b-dot{display:none}}
.km-top-callout{margin:0 0 22px}
.km-top-callout .km-callout{margin:0 0 10px}
/* Round 40: last day to enter (amber) on calendar tags; the eve stays a plain small tag */
.ec-row .ec-tag.ec-tag-last{background:rgba(242,196,109,.16);color:#f2c46d}
.km-hc-time{font-weight:700;color:var(--km-a)!important;opacity:1!important}
/* Nov 9 (owner: "the banners of the current events closing need to be smaller, it looks messy"): compact Today cards,
   sticky banner and race-page callout. One tidy two-line card: dot · title (sans, not the display face) · time below,
   actions on the right (stacked under the text on phones). Accent colours unchanged; red is still never used here. */
.km-hero{gap:8px;margin:0 0 24px;max-width:820px}
.km-hc{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:2px 12px;padding:12px 16px;border-radius:12px;border:1px solid color-mix(in srgb,var(--km-a) 45%,transparent);border-left:3px solid var(--km-a);background:color-mix(in srgb,var(--km-a) 7%,rgba(11,11,14,.92));box-shadow:none}
.km-hc-eye{grid-column:1;grid-row:1;font-size:0;letter-spacing:0;gap:0}
.km-hc-eye i{width:8px;height:8px}
.km-hc-t{grid-column:2;grid-row:1;font:600 16px/1.3 var(--sans);text-transform:none;letter-spacing:0}
.km-hc-note{grid-column:2;margin:0;font-size:13px;line-height:1.35}
.km-hc-acts{grid-column:3;grid-row:1 / span 3;margin:0;flex-wrap:nowrap;gap:12px}
.km-hc-btn{padding:8px 14px;font-size:14px}
.km-hc-2{font-size:13px;text-underline-offset:3px}
@media (max-width:760px){
 .km-hero{margin-bottom:18px}
 .km-hc{grid-template-columns:auto minmax(0,1fr);padding:11px 13px;gap:2px 10px}
 .km-hc-t{font-size:15px}
 .km-hc-acts{grid-column:2;grid-row:auto;margin-top:8px;gap:14px}
 .km-hc-btn{width:auto;padding:8px 14px}
}
.km-banner{font-size:14px}
.km-b-in{min-height:40px;gap:12px;padding:4px max(20px,calc((100vw - 1240px)/2))}
.km-banner a.km-b-t b{font-size:11px;letter-spacing:.12em}
.km-b-more{font-size:12px}
.km-b-cta{padding:6px 12px;font-size:13px}
.km-b-x{width:28px;height:28px;font-size:16px}
@media (max-width:760px){
 .km-banner{font-size:13px}
 .km-b-in{flex-wrap:nowrap;min-height:44px;gap:8px;padding:4px 8px 4px 14px}
 .km-banner a.km-b-t{flex:1 1 auto;white-space:nowrap}
 .km-b-more{display:none}
 .km-b-cta{flex:none;padding:6px 10px}
 .km-b-x{width:30px;height:30px}
}
.km-callout{gap:6px;padding:12px 16px;border-width:1px;border-left-width:3px;border-radius:12px}
.km-callout .km-co-t{font:600 17px/1.3 var(--sans);text-transform:none}
.km-callout small{font-size:13px}
.km-callout .km-hc-btn{padding:8px 14px;font-size:14px}
.km-hc .km-hc-btn.rm-bell,.km-hc .km-hc-btn{padding:0 14px;min-height:34px;height:34px;font:700 14px/1 var(--sans)}
.km-hc .km-hc-btn.rm-bell .rm-ic{width:14px;height:14px}
.km-hc .km-hc-note{font-size:13px}
