/* Semantic and keyboard improvements; the approved brand stylesheet is unchanged. */
.seo-main { display:block; margin:0; padding:0; width:100%; }
[data-page-content] > .section-card:first-child,
[data-page-content] > .brand-panel:first-child { margin-top:0; }
.skip-link { position:fixed; top:-8rem; left:1rem; z-index:5000; background:var(--paper); padding:.8rem 1rem; }
.skip-link:focus { top:1rem; }
.seo-related { width:min(var(--max), calc(100% - clamp(1.25rem, 4vw, 4rem))); margin:1.5rem auto; }
.seo-original-h1 { font-size:clamp(3rem, 7vw, 6.8rem); max-width:12ch; }
.seo-original-h2 { font-size:clamp(2rem, 3.6vw, 4rem); max-width:14ch; }
.seo-original-h3 { font-size:clamp(1.25rem, 1.5vw, 1.75rem); max-width:none; margin:0 0 .5rem; }
@media (max-width:900px) {
  .seo-original-h1 { font-size:clamp(2.6rem, 13vw, 4.2rem); }
  .seo-original-h2 { font-size:clamp(2rem, 9vw, 3.1rem); }
  html:not(.nav-ready) #navMenu { display:flex; position:static; }
  html:not(.nav-ready) #navToggle { display:none; }
  html:not(.nav-ready) .nav-container { flex-wrap:wrap; }
}
.ticker-track a { white-space:nowrap; }
.ticker-track:focus-within, .ticker-track:hover { animation-play-state:paused; }
.page-news #article-viewer, .page-gallery #lightbox { display:none; position:fixed; inset:0; z-index:2000; background:rgba(0,0,0,.7); padding:1rem; overflow:auto; }
.page-news #article-viewer.is-visible, .page-gallery #lightbox.show { display:flex; align-items:flex-start; justify-content:center; }
.page-news #article-viewer .article-content { background:var(--paper); width:min(900px, 100%); padding:clamp(1rem, 4vw, 3rem); border-radius:18px; }
.page-gallery #lightbox.show { flex-direction:column; align-items:center; }
.page-gallery #lightbox img { max-height:80vh; object-fit:contain; }
.archive-tile[hidden], .gallery-controls[hidden] { display:none !important; }
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  .ticker-track { animation:none; flex-wrap:wrap; }
}

/* Opt-in atmospheric confetti: exact Gallery/Games/Volunteer dot geometry.
   News keeps its existing markup and layout. Future heroes can opt in with
   .env-confetti; no effect on other pages, no raster, animation or semantic text. */
:root {
  --env-confetti-pattern: radial-gradient(circle at 20px 20px, var(--riso-yellow) 0 7px, transparent 8px), radial-gradient(circle at 65px 52px, var(--riso-pink) 0 9px, transparent 10px), radial-gradient(circle at 105px 18px, var(--riso-blue) 0 6px, transparent 7px), radial-gradient(circle at 35px 99px, var(--community-green) 0 8px, transparent 9px), radial-gradient(circle at 116px 109px, var(--riso-orange) 0 7px, transparent 8px);
}
.env-confetti { position:relative; isolation:isolate; overflow:hidden; }
.env-confetti::before, .newsroom .nr-intro::after {
  content:""; position:absolute; inset:-2rem -3rem -2rem 38%;
  width:auto !important; height:auto; aspect-ratio:auto;
  border:0; border-radius:0; transform:none;
  background:var(--env-confetti-pattern); background-size:145px 145px;
  background-repeat:repeat; opacity:.14; pointer-events:none; z-index:-1;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000);
  mask-image:linear-gradient(90deg,transparent,#000);
}
@media (max-width:640px) {
  .env-confetti::before, .newsroom .nr-intro::after { inset-inline-start:20%; opacity:.09; }
}
