/* Rathvane motion layer: the page is still, then it breathes. Every effect is small, slow, and off for people who ask for reduced motion.
   Techniques borrowed from idle-scene sites (enjoy.dev): scroll reveals with stagger, word-by-word headline, a scanning line on the
   instrument card, a shimmering waterline, counting numbers, a typing prompt. Nothing moves faster than a reader. */
@media (prefers-reduced-motion: no-preference) {
  /* scroll reveal, staggered by position among siblings */
  [data-rv-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .75s cubic-bezier(.2,.7,.2,1), transform .75s cubic-bezier(.2,.7,.2,1); transition-delay: calc(var(--rv-i, 0) * 80ms); will-change: opacity, transform; }
  [data-rv-reveal][data-rv-in] { opacity: 1; transform: none; }
  /* hero headline arrives one word at a time */
  .rv-ink h1 .rv-w { display: inline-block; opacity: 0; transform: translateY(.4em); animation: rv-word .65s cubic-bezier(.2,.7,.2,1) forwards; animation-delay: calc(var(--rv-i, 0) * 55ms + 150ms); }
  @keyframes rv-word { to { opacity: 1; transform: none; } }
  .rv-ink h1 + .rv-rule { transform-origin: left; animation: rv-rule 1s cubic-bezier(.2,.7,.2,1) .5s both; }
  @keyframes rv-rule { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  /* the one-screen card: a capture line sweeps the instrument every few seconds */
  .rv-hero-grid .rv-paper-card { position: relative; overflow: hidden; }
  .rv-hero-grid .rv-paper-card::after { content: ""; position: absolute; left: 0; right: 0; top: -4px; height: 3px; background: linear-gradient(90deg, transparent, var(--rv-gold, #E8A317), transparent); opacity: 0; animation: rv-scan 8s ease-in-out 2.5s infinite; pointer-events: none; }
  @keyframes rv-scan { 0% { top: -4px; opacity: 0; } 4% { opacity: .95; } 28% { top: 100%; opacity: .95; } 30% { opacity: 0; } 100% { top: 100%; opacity: 0; } }
  /* the waterline moves like water */
  .rv-waterline-bar { background-image: linear-gradient(90deg, var(--rv-accent-2, #2461d9) 0 42%, #a9c7ff 50%, var(--rv-accent-2, #2461d9) 58% 100%) !important; background-size: 220% 100%; animation: rv-shimmer 4.2s linear infinite; }
  .rv-waterline-bar:last-child { animation-delay: -2.1s; }
  @keyframes rv-shimmer { from { background-position: 220% 0; } to { background-position: -220% 0; } }
  /* the one move earns a gold rule that draws itself when the card arrives */
  .rv-hero-grid .rv-move { position: relative; padding-left: 14px; }
  .rv-hero-grid .rv-move::before { content: ""; position: absolute; left: 0; top: 2px; bottom: 2px; width: 3px; background: var(--rv-gold, #E8A317); transform: scaleY(0); transform-origin: top; animation: rv-draw .7s cubic-bezier(.2,.7,.2,1) 1.1s both; }
  @keyframes rv-draw { to { transform: scaleY(1); } }
  /* evidence rows and cards answer the cursor */
  .rv-cap { transition: transform .2s ease, background-color .2s ease; }
  .rv-cap:hover { transform: translateX(5px); }
  .rv-cards > .rv-card, .rv-grid-3 > .rv-paper-card { transition: transform .28s ease, box-shadow .28s ease; }
  .rv-cards > .rv-card:hover, .rv-grid-3 > .rv-paper-card:hover { transform: translateY(-3px); box-shadow: 0 16px 34px rgba(11, 22, 35, .10); }
  .brxe-button { transition: transform .18s ease, background-color .18s ease, color .18s ease !important; }
  .brxe-button:hover { transform: translateY(-2px); }
  /* capture chips on the finding card blink once when seen */
  [data-rv-in] .rv-view { animation: rv-blink 1.2s ease .6s 1; }
  @keyframes rv-blink { 0%, 100% { color: inherit; } 40% { color: var(--rv-gold, #E8A317); } }
  /* Listen pill already pulses; the chat prompt types */
  .rv-chat-input.rv-typing::placeholder { color: #334155; }
}
