/**
 * The release demos, on the website.
 *
 * The app has shown a moving picture on every release note for a while; the website's releases
 * page had none — the same shipped feature, described in prose on one surface and demonstrated on
 * the other. These are the SAME demos, ported: CSS-animated DOM, not video and not GIFs. A few
 * hundred bytes each, they inherit the page's theme, they translate with the rest of the site
 * (the words inside them are plain text, so glance-lang.js's raw pass picks them up), and they
 * can't be a 4MB download on a phone.
 *
 * Two bridges from the app's stylesheet — the only differences from it:
 *   · the app calls its accent --brand; this site calls it --gc-brand.
 *   · the app themes on html[data-theme]; this site themes on :root[data-theme].
 */
:root {
  --brand: var(--gc-brand, #c5311d)
}


/* ── Play on sight, not on load ────────────────────────────────────────────────
   A CSS animation starts when the element is PAINTED, not when it's seen. Every demo on the
   releases page — fifteen of them, most below the fold — began animating the moment the page
   loaded, and `forwards` holds the last frame. So each one played to an empty room and you
   scrolled down to a frozen final still.

   Nothing runs until glance-demos.js adds .in (the demo is on screen); it comes off again when
   the demo scrolls away, so coming back replays it instead of showing the same dead frame. */
.rd:not(.in),
.rd:not(.in) * {
  animation: none !important
}

/* Reduced motion is the exception that overrides the gate: those users get the finished picture
   immediately, and never the blank pre-animation state. See the block at the end of this file. */

.rd-wrap {
  margin-top: 14px
}

/* No border, no fake title bar. The demo is the content — it was wearing a costume of browser
   chrome that fought every page it sat on. */
.rd {
  overflow: hidden
}

.rd-body {
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 9px
}

/* The demo is evidence for the sentence directly above it, so it's indented under that sentence
   and set on a quieter surface — a picture floating flush against the prose read as a separate
   thing that had landed there by accident. */
.rd {
  margin: 14px 0 2px;
  padding: 14px 16px;
  border-radius: 12px;
  background: var(--bg);
  border: 1px solid var(--line)
}

@media (max-width:600px) {
  .rd {
    padding: 12px
  }
}

.rd-ask {
  align-self: flex-end;
  max-width: 88%;
  background: var(--brand);
  color: #fff;
  font-size: 13px;
  border-radius: 13px 13px 4px 13px;
  padding: 8px 12px;
  opacity: 0;
  animation: rdIn .4s ease-out forwards
}

@keyframes rdIn {
  to {
    opacity: 1;
    transform: none
  }
}

.rd-typed {
  display: inline-block;
  overflow: hidden;
  white-space: nowrap;
  border-right: 2px solid rgba(255, 255, 255, .8);
  width: 0;
  animation: rdType 1.4s steps(34, end) .3s forwards, rdCaret .7s step-end 5
}

@keyframes rdType {
  to {
    width: 100%
  }
}

@keyframes rdCaret {
  50% {
    border-color: transparent
  }
}

.rd-think {
  display: flex;
  gap: 4px;
  padding: 2px;
  opacity: 0;
  animation: rdIn .3s ease-out .5s forwards, rdOut .3s ease-out 1.15s forwards
}

@keyframes rdOut {
  to {
    opacity: 0;
    height: 0;
    padding: 0;
    margin: -5px 0
  }
}

.rd-think i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--muted);
  animation: rdBounce 1s ease-in-out infinite
}

.rd-think i:nth-child(2) {
  animation-delay: .14s
}

.rd-think i:nth-child(3) {
  animation-delay: .28s
}

@keyframes rdBounce {

  0%,
  60%,
  100% {
    transform: translateY(0);
    opacity: .45
  }

  30% {
    transform: translateY(-4px);
    opacity: 1
  }
}

.rd-said {
  align-self: flex-start;
  max-width: 94%;
  border: 1px solid var(--line);
  background: var(--panel);
  border-radius: 13px 13px 13px 4px;
  padding: 9px 12px;
  font-size: 13px;
  line-height: 1.55;
  opacity: 0;
  animation: rdIn .45s ease-out 1.2s forwards
}

.rd-said.left {
  align-self: flex-start;
  animation-delay: 0ms
}

.rd-none,
.rd-sent {
  font-size: 11.5px;
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: 9px;
  padding: 7px 10px;
  opacity: 0;
  animation: rdIn .4s ease-out 1.8s forwards
}

.rd-bars {
  display: flex;
  align-items: flex-end;
  gap: 5px;
  height: 66px;
  opacity: 1
}

.rd-bars.tall {
  height: 110px
}

.rd-bars.small {
  height: 44px
}

.rd-bars span {
  flex: 1;
  height: 0;
  border-radius: 4px 4px 2px 2px;
  background: #c9d4ea;
  display: block;
  animation: rdRise .7s cubic-bezier(.22, 1, .36, 1) forwards;
  animation-delay: var(--d)
}

.rd-bars span.hot {
  background: var(--brand)
}

@keyframes rdRise {
  to {
    height: var(--h)
  }
}

:root[data-theme="dark"] .rd-bars span {
  background: #39435a
}

:root[data-theme="dark"] .rd-bars span.hot {
  background: var(--brand)
}

.rd-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  align-items: stretch;
  position: relative
}

.rd-cursor {
  position: absolute;
  width: 0;
  height: 0;
  border-left: 9px solid var(--text);
  border-bottom: 6px solid transparent;
  border-top: 6px solid transparent;
  left: 6%;
  top: 10%;
  opacity: 0;
  animation: rdMove 1.3s cubic-bezier(.5, 0, .2, 1) .7s forwards
}

@keyframes rdMove {
  0% {
    opacity: 0;
    left: 6%;
    top: 10%
  }

  25% {
    opacity: 1
  }

  100% {
    opacity: 1;
    left: 58%;
    top: 38%
  }
}

.rd-rows {
  display: flex;
  flex-direction: column;
  gap: 5px;
  justify-content: center
}

.rd-row {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 11.5px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 6px 8px;
  background: var(--panel);
  opacity: 0;
  transform: translateX(-8px);
  animation: rdSlide .45s cubic-bezier(.22, 1, .36, 1) forwards;
  animation-delay: var(--d)
}

@keyframes rdSlide {
  to {
    opacity: 1;
    transform: none
  }
}

.rd-row.tick::after {
  content: "✓";
  color: #12775a;
  font-weight: 800;
  margin-left: 4px
}

:root[data-theme="dark"] .rd-row.tick::after {
  color: #5fcf9a
}

.rd-note {
  margin: 6px 0 0;
  font-size: 11px;
  color: var(--muted);
  font-style: italic
}

.rd-doc {
  position: relative;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--panel);
  padding: 11px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  overflow: hidden
}

.rd-doc span {
  height: 6px;
  border-radius: 3px;
  background: var(--line);
  display: block
}

.rd-doc em {
  font-size: 10px;
  color: var(--muted);
  font-style: normal;
  text-align: center;
  margin-top: 4px
}

.rd-scan {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 36%;
  background: linear-gradient(180deg, rgba(91, 140, 255, 0), rgba(91, 140, 255, .35));
  border-bottom: 2px solid var(--brand);
  animation: rdScan 1.5s cubic-bezier(.5, 0, .5, 1) 2
}

@keyframes rdScan {
  0% {
    opacity: 0;
    transform: translateY(-40%)
  }

  20% {
    opacity: 1
  }

  85% {
    opacity: 1
  }

  100% {
    opacity: 0;
    transform: translateY(210%)
  }
}

.rd-langs {
  position: relative;
  height: 74px
}

.rd-lang {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
  justify-content: center;
  opacity: 0;
  animation: rdCycle 12s linear infinite;
  animation-delay: calc(var(--i) * 2s)
}

@keyframes rdCycle {

  0%,
  1% {
    opacity: 0
  }

  3%,
  14% {
    opacity: 1
  }

  17%,
  100% {
    opacity: 0
  }
}

.rd-lang span {
  font-size: 11px;
  color: var(--muted);
  font-weight: 650
}

.rd-lang b {
  font-size: 14.5px;
  line-height: 1.5
}

.rd-fields {
  display: flex;
  flex-direction: column;
  gap: 6px
}

.rd-field {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-size: 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 8px 10px;
  background: var(--panel);
  opacity: 0;
  animation: rdIn .45s ease-out forwards;
  animation-delay: var(--d)
}

.rd-field span {
  color: var(--muted)
}

.rd-field.on {
  border-color: var(--brand)
}

.rd-drop {
  border: 1px dashed var(--line);
  border-radius: 9px;
  padding: 10px;
  font-size: 12px;
  color: var(--muted);
  text-align: center;
  opacity: 0;
  animation: rdIn .45s ease-out forwards;
  animation-delay: var(--d)
}

.rd-prices {
  display: flex;
  gap: 7px;
  flex-wrap: wrap
}

.rd-price {
  display: flex;
  align-items: baseline;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 11px;
  background: var(--panel);
  font-size: 12.5px;
  opacity: 0;
  transform: translateY(6px);
  animation: rdSlide .45s cubic-bezier(.22, 1, .36, 1) forwards;
  animation-delay: var(--d)
}

.rd-price em {
  font-style: normal;
  color: var(--muted);
  font-size: 11px
}

.rd-goal {
  display: flex;
  flex-direction: column;
  gap: 7px
}

.rd-goalhead {
  display: flex;
  justify-content: space-between;
  font-size: 12.5px
}

.rd-goalhead span {
  color: var(--muted)
}

.rd-goalbar {
  position: relative;
  height: 10px;
  border-radius: 999px;
  background: var(--bg);
  border: 1px solid var(--line)
}

.rd-goalbar i {
  position: absolute;
  inset: 0 auto 0 0;
  width: 0;
  border-radius: 999px;
  background: linear-gradient(90deg, #a8541a, #c08a2e);
  animation: rdFill 1.1s cubic-bezier(.22, 1, .36, 1) .2s forwards
}

/* On-track variant — the fill itself carries the verdict, not just the words beside it. */
.rd-goalbar.good i {
  background: linear-gradient(90deg, #0d8a5f, #12a06f)
}

@keyframes rdFill {
  to {
    width: var(--pct)
  }
}

.rd-goalbar em {
  position: absolute;
  top: -4px;
  bottom: -4px;
  left: 0;
  width: 2px;
  background: var(--text);
  opacity: 0;
  animation: rdPace .7s cubic-bezier(.22, 1, .36, 1) 1s forwards
}

@keyframes rdPace {
  to {
    left: var(--pace);
    opacity: .85
  }
}

.rd-verdict {
  font-size: 12px;
  font-weight: 650;
  color: #b4530f;
  opacity: 0;
  animation: rdIn .5s ease-out 1.6s forwards
}

:root[data-theme="dark"] .rd-verdict {
  color: #e0a636
}

.rd-alert {
  border: 1px solid #f0b357;
  background: rgba(245, 176, 66, .09);
  border-radius: 10px;
  padding: 11px 12px
}

.rd-alert b {
  display: block;
  font-size: 12.5px;
  margin-bottom: 4px
}

.rd-alert p {
  margin: 0 0 8px;
  font-size: 11.5px;
  color: var(--muted)
}

.rd-acts {
  display: flex;
  gap: 6px;
  flex-wrap: wrap
}

.rd-acts span {
  font-size: 11px;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 5px 9px;
  background: var(--panel)
}

.rd-acts .go {
  background: var(--brand);
  color: #fff;
  border-color: var(--brand)
}

.rd-faq {
  display: flex;
  justify-content: space-between;
  font-size: 12.5px;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 9px 11px;
  background: var(--panel);
  opacity: 0;
  animation: rdIn .45s ease-out forwards;
  animation-delay: var(--d)
}

.rd-faq em {
  color: var(--muted);
  font-style: normal
}

.rd-home {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 8px 0
}

.rd-appicon {
  width: 52px;
  height: 52px;
  border-radius: 14px;
  background: linear-gradient(135deg, #c5311d, #c08a2e);
  box-shadow: 0 8px 20px rgba(47, 98, 214, .25);
  animation: rdPop .6s cubic-bezier(.34, 1.56, .64, 1) both
}

@keyframes rdPop {
  from {
    opacity: 0;
    transform: scale(.6)
  }
}

.rd-home span {
  font-size: 11.5px;
  color: var(--muted)
}

.rd-inbox {
  display: flex;
  align-items: center;
  gap: 11px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
  padding: 10px 12px;
  opacity: 0;
  animation: rdSlide .5s cubic-bezier(.22, 1, .36, 1) .3s both
}

.rd-envelope {
  width: 30px;
  height: 22px;
  border-radius: 4px;
  background: var(--brand);
  flex: 0 0 auto;
  position: relative
}

.rd-envelope::after {
  content: "";
  position: absolute;
  inset: 0;
  border-top: 11px solid rgba(255, 255, 255, .35);
  border-left: 15px solid transparent;
  border-right: 15px solid transparent;
  box-sizing: border-box
}

.rd-inboxmeta {
  display: flex;
  flex-direction: column;
  min-width: 0
}

.rd-inboxmeta b {
  font-size: 13px;
  color: var(--text)
}

.rd-inboxmeta span {
  font-size: 11px;
  color: var(--muted)
}

.rd-watch {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 12.5px;
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: 9px;
  padding: 8px 11px
}

.rd-pulse {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--brand);
  flex: 0 0 auto;
  animation: rdPulse 1.6s ease-out infinite
}

@keyframes rdPulse {
  0% {
    box-shadow: 0 0 0 0 rgba(91, 140, 255, .55)
  }

  70% {
    box-shadow: 0 0 0 8px rgba(91, 140, 255, 0)
  }

  100% {
    box-shadow: 0 0 0 0 rgba(91, 140, 255, 0)
  }
}

.rd-quote {
  font-size: 12px;
  color: var(--muted);
  font-style: italic;
  border-left: 3px solid var(--brand);
  padding: 4px 0 4px 10px;
  opacity: 0;
  animation: rdIn .5s ease-out forwards;
  animation-delay: var(--d)
}

.rd-theme {
  display: flex;
  align-items: center;
  gap: 12px
}

.rd-thpreview {
  width: 38px;
  height: 38px;
  border-radius: 9px;
  border: 1px solid var(--line);
  flex: 0 0 auto;
  background: #eef2f8;
  animation: rdTheme 1.8s ease-in-out .4s infinite alternate
}

@keyframes rdTheme {

  0%,
  40% {
    background: #eef2f8
  }

  60%,
  100% {
    background: #0b0d12
  }
}

.rd-thopts {
  display: flex;
  flex-direction: column;
  gap: 5px
}

.rd-thopts span {
  font-size: 11.5px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 5px 9px;
  opacity: 0;
  animation: rdIn .4s ease-out forwards;
  animation-delay: var(--d)
}

.rd-thopts span.on {
  border-color: var(--brand);
  color: var(--text);
  font-weight: 650
}

@media (prefers-reduced-motion:reduce) {

  .rd *,
  .rd {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important
  }

  .rd-bars span {
    height: var(--h) !important
  }

  .rd-goalbar i {
    width: var(--pct) !important
  }

  .rd-goalbar em {
    left: var(--pace) !important;
    opacity: .85 !important
  }

  .rd-typed {
    width: auto !important;
    border-right: 0
  }

  .rd-scan,
  .rd-cursor,
  .rd-think {
    display: none
  }

  .rd-lang {
    position: relative;
    opacity: 1 !important;
    margin-bottom: 8px
  }

  .rd-langs {
    height: auto
  }
}


/* Some releases carry seven demos. Stacked one per row that's a mineshaft; two-up on anything
   wider than a phone, one-up on a phone, where two would be unreadable. */
.rd-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
  margin-top: 14px
}

@media (max-width:600px) {
  .rd-grid {
    grid-template-columns: 1fr
  }
}
/* ── Position-based reveal ──────────────────────────────────────────────────────────────────
 * The demo elements used to carry a per-element inline `--d` (animation delay) and
 * `animation-fill-mode:both`. That's fine functionally but trips the "no inline styles" lint on
 * every row. The delay is really just "stagger by position", so it belongs here as nth-child
 * rules — the markup then needs no inline style at all. (Bar heights and doc-line widths stay
 * inline: those are genuine per-element DATA, not styling, and can't live in a stylesheet.) */
.rd-row,.rd-field,.rd-lang,.rd-price,.rd-drop,.rd-quote{animation-fill-mode:both}
.rd-rows>.rd-row:nth-child(1){--d:200ms}
.rd-rows>.rd-row:nth-child(2){--d:460ms}
.rd-rows>.rd-row:nth-child(3){--d:720ms}
.rd-rows>.rd-row:nth-child(4){--d:980ms}
.rd-rows>.rd-row:nth-child(5){--d:1240ms}
.rd-fields>.rd-field:nth-child(1){--d:120ms}
.rd-fields>.rd-field:nth-child(2){--d:460ms}
.rd-fields>.rd-field:nth-child(3){--d:800ms}
.rd-langs>.rd-lang:nth-child(1){--i:0}
.rd-langs>.rd-lang:nth-child(2){--i:1}
.rd-langs>.rd-lang:nth-child(3){--i:2}
.rd-langs>.rd-lang:nth-child(4){--i:3}
.rd-langs>.rd-lang:nth-child(5){--i:4}
.rd-langs>.rd-lang:nth-child(6){--i:5}
.rd-prices>.rd-price:nth-child(1){--d:0ms}
.rd-prices>.rd-price:nth-child(2){--d:140ms}
.rd-prices>.rd-price:nth-child(3){--d:280ms}
.rd-prices>.rd-price:nth-child(4){--d:420ms}
.rd-prices>.rd-price:nth-child(5){--d:560ms}
.rd-drop{--d:900ms}
.rd-quote{--d:800ms}

.rd-row em{opacity:.6}

/* ── Release-demo primitives added 2026-07-18 (match the app; see glance-app release-demo.tsx) ── */
.rd-cards{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.rd-card{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:9px;padding:8px 9px;
  background:var(--panel);opacity:0;transform:translateY(6px);animation:rdIn .45s ease-out forwards;animation-delay:var(--d)}
.rd-card .ic{width:26px;height:26px;border-radius:7px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand);font-size:14px}
.rd-card b{font-size:12px;line-height:1.15}
.rd-card small{display:block;color:var(--muted);font-size:10px}
.rd-boards{display:flex;flex-direction:column;gap:6px}
.rd-boardcard{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);
  border-radius:9px;padding:8px 10px;background:var(--panel);opacity:0;transform:translateX(-8px);
  animation:rdSlide .45s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--d)}
.rd-boardcard .nm{font-size:12px;display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rd-boardcard .star{color:var(--brand)}
.rd-boardcard .act{font-size:10.5px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:2px 7px;flex:0 0 auto}
.rd-steps{display:flex;flex-direction:column;gap:6px}
.rd-step{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);opacity:0;
  animation:rdIn .4s ease-out forwards;animation-delay:var(--d)}
.rd-step .tick{width:18px;height:18px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;background:var(--bg);border:1.5px solid var(--line);color:var(--muted)}
.rd-step.done .tick{background:var(--brand);border-color:var(--brand);color:#fff}
.rd-step.now{color:var(--text)}
.rd-step.now .tick{border:0}
.rd-step.now .tick i{width:13px;height:13px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--brand);animation:rdSpin .7s linear infinite}
@keyframes rdSpin{to{transform:rotate(360deg)}}
.rd-row .rleft{display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden}
.rd-row .dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--muted);display:inline-block}
.rd-row .dot.ok{background:#12a06f}.rd-row .dot.err{background:#d64550}
.rd-row.off{opacity:.55}.rd-row.off .rlabel{text-decoration:line-through}
.rd-chips{display:flex;gap:6px;flex-wrap:wrap}
.rd-chip{font-size:11.5px;border:1px solid var(--line);border-radius:999px;padding:5px 11px;background:var(--panel);
  opacity:0;animation:rdIn .4s ease-out forwards;animation-delay:var(--d)}
.rd-chip.on{border-color:var(--brand);color:var(--text);font-weight:650;background:color-mix(in srgb,var(--brand) 10%,transparent)}
.rd-people{display:flex;flex-direction:column;gap:6px}
.rd-person{display:flex;align-items:center;gap:8px;font-size:12px;opacity:0;transform:translateX(-8px);
  animation:rdSlide .45s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--d)}
.rd-person .av{width:22px;height:22px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--brand),#c08a2e)}
.rd-person .role{margin-left:auto;font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:2px 7px}
.rd-receipt{display:flex;align-items:center;gap:8px;font-size:12px;border:1px solid var(--line);border-radius:9px;
  padding:7px 9px;background:var(--panel);opacity:0;transform:translateX(-8px);
  animation:rdSlide .45s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--d)}
.rd-receipts{display:flex;flex-direction:column;gap:6px}
.rd-receipt .amt{margin-left:auto;font-weight:700}
.rd-receipt.off{opacity:.55}.rd-receipt.off .rn{text-decoration:line-through}.rd-receipt.off .amt{color:var(--muted);font-weight:600}
.rd-card .tx{display:flex;flex-direction:column;min-width:0}
.rd-chip i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:-1px}
/* Position-based stagger (keeps the markup free of inline --d, per the lint above). */
.rd-cards>.rd-card:nth-child(1),.rd-boards>.rd-boardcard:nth-child(1),.rd-steps>.rd-step:nth-child(1),.rd-chips>.rd-chip:nth-child(1),.rd-people>.rd-person:nth-child(1),.rd-receipts>.rd-receipt:nth-child(1){--d:120ms}
.rd-cards>.rd-card:nth-child(2),.rd-boards>.rd-boardcard:nth-child(2),.rd-steps>.rd-step:nth-child(2),.rd-chips>.rd-chip:nth-child(2),.rd-people>.rd-person:nth-child(2),.rd-receipts>.rd-receipt:nth-child(2){--d:300ms}
.rd-cards>.rd-card:nth-child(3),.rd-boards>.rd-boardcard:nth-child(3),.rd-steps>.rd-step:nth-child(3),.rd-chips>.rd-chip:nth-child(3),.rd-people>.rd-person:nth-child(3),.rd-receipts>.rd-receipt:nth-child(3){--d:480ms}
.rd-cards>.rd-card:nth-child(4),.rd-steps>.rd-step:nth-child(4),.rd-chips>.rd-chip:nth-child(4){--d:660ms}
.rd-chips>.rd-chip:nth-child(5){--d:840ms}
.rd-chips>.rd-chip:nth-child(6){--d:1020ms}
.rd-card,.rd-boardcard,.rd-step,.rd-chip,.rd-person,.rd-receipt{animation-fill-mode:both}

/* Daily Briefing demo (1.4) — headline rows + verdict chip + at-risk action. */
.rd-brief{display:flex;flex-direction:column;gap:6px}
.rd-brow{display:flex;align-items:center;gap:8px;font-size:12px;border:1px solid var(--line);border-radius:9px;
  padding:8px 10px;background:var(--panel);opacity:0;animation:rdIn .45s ease-out forwards;animation-fill-mode:both;animation-delay:var(--d)}
.rd-brow .nm{color:var(--muted)}
.rd-brow b{margin-left:auto;font-size:14px}
.rd-brow .ch{font-size:10px;font-weight:700;border-radius:999px;padding:2px 8px}
.rd-brow .ch.ok{color:#fff;background:#0a7a52}
.rd-brow .ch.bad{color:#fff;background:#c0392b}
.rd-baction{display:block;font-size:11.5px;color:#a86616;border:1px dashed rgba(245,176,66,.5);border-radius:9px;
  padding:7px 10px;opacity:0;animation:rdIn .4s ease-out forwards;animation-fill-mode:both;animation-delay:.6s}
.rd-brief>.rd-brow:nth-child(1){--d:180ms}
.rd-brief>.rd-brow:nth-child(2){--d:360ms}

/* Dark mode: lift the briefing verdict colours above 4.5:1 (they're dark shades tuned for light). */
:root[data-theme="dark"] .rd-baction{color:#e0a83a;border-color:rgba(224,168,58,.4)}
