/* The Raisina Post: one geometric red status mark across editorial surfaces.
   A pulsating red mark is an activity cue only when the source record is live.
   The footer's brand punctuation is a decorative, always-pulsing exception. */
:root{--rp-live-red:#b42332}

body .home-threads-heading h2 .home-threads-dot,
body .home-bulletins-heading h2 .home-bulletins-live-dot,
body .threads-intro h1 .threads-dot,
body .bulletin-page h1 .dot,
body .editorial-footer-identity .editorial-footer-name .footer-status-dot {
  display:inline-block;
  flex:none;
  box-sizing:border-box;
  width:8px;
  height:8px;
  min-width:8px;
  min-height:8px;
  border:0;
  border-radius:50%;
  background-color:var(--rp-live-red);
  color:transparent;
  font-size:0;
  line-height:0;
  margin-inline-start:5px;
  vertical-align:middle;
  transform:translateY(-1px);
}
body .threads-intro h1 .threads-dot,
body .bulletin-page h1 .dot{
  width:11px;
  height:11px;
  min-width:11px;
  min-height:11px;
  margin-inline-start:7px;
}
body .editorial-footer-identity .editorial-footer-name .footer-status-dot {
  width:7px;
  height:7px;
  min-width:7px;
  min-height:7px;
  margin-inline-start:5px;
}

/* Fade only, never scale or move: the circle cannot become elliptical. */
@keyframes status-dot-blink {
  0%,100%{opacity:1}
  50%{opacity:.26}
}

/* Bulletins and the footer are editorial activity/identity accents. */
body .home-bulletins-heading h2 .home-bulletins-live-dot,
body .bulletin-page h1 .dot,
body .editorial-footer-identity .editorial-footer-name .footer-status-dot {
  animation:status-dot-blink 2.3s ease-in-out infinite;
}

/* No pulse for a paused/concluded thread, even if its title still says Live. */
body .threads-status--live::before,
body .home-thread-status--live::before,
body .home-thread-spot-status--live::before{
  display:inline-block;
  width:7px;
  height:7px;
  flex:none;
  border-radius:50%;
  background:var(--rp-live-red);
  animation:status-dot-blink 2.3s ease-in-out infinite;
}
body .threads-status--paused::before,
body .threads-status--concluded::before,
body .home-thread-status--paused::before,
body .home-thread-spot-status--paused::before{
  animation:none;
}

/* Heading dots pulse only when the page actually contains a live thread. */
body .home-threads:has(.home-thread-status--live, .home-thread-spot-status--live, .home-daily-card[data-live-status="live"]) .home-threads-dot,
body .threads-page:has(.threads-status--live, .threads-daily-card[data-live-status="live"], .threads-subject-stack[data-live-status="live"]) .threads-dot{
  animation:status-dot-blink 2.3s ease-in-out infinite;
}

/* Daily desk titles receive a dot only when the canonical record is LIVE.
   Historical editions and empty placeholder cards do not blink. */
body .home-daily-card[data-live-status="live"] h3::after,
body .threads-daily-card[data-live-status="live"] h3::after,
body .threads-subject-stack[data-live-status="live"] .threads-stack-heading h3::after {
  content:"";
  display:inline-block;
  box-sizing:border-box;
  width:7px;
  height:7px;
  margin-inline-start:7px;
  vertical-align:middle;
  background:var(--rp-live-red);
  border-radius:50%;
  animation:status-dot-blink 2.3s ease-in-out infinite;
}

@media(prefers-reduced-motion:reduce){
  body .home-threads-heading h2 .home-threads-dot,
  body .home-bulletins-heading h2 .home-bulletins-live-dot,
  body .threads-intro h1 .threads-dot,
  body .bulletin-page h1 .dot,
  body .editorial-footer-identity .editorial-footer-name .footer-status-dot,
  body .threads-status--live::before,
  body .home-thread-status--live::before,
  body .home-thread-spot-status--live::before,
  body .home-daily-card[data-live-status="live"] h3::after,
  body .threads-daily-card[data-live-status="live"] h3::after,
  body .threads-subject-stack[data-live-status="live"] .threads-stack-heading h3::after{
    animation:none!important;
    opacity:1!important;
  }
}
