/* One-shot reveals are hidden only after the observer is installed. */
.js-ready [data-reveal] { animation: bout-enter 600ms var(--bout-ease) var(--reveal-delay, 0ms) both; animation-play-state: paused; }
.js-ready [data-reveal]:not(.is-in) { opacity: 0; transform: translateY(24px); }
.js-ready [data-reveal].is-in { animation-play-state: running; }
.js-ready .bout-arena h1 span:first-child { animation: bout-light-enter 650ms var(--bout-ease) both; }
.js-ready .bout-arena h1 span:last-child { animation: bout-dark-enter 650ms var(--bout-ease) 80ms both; }
.js-ready .bout-nav { animation: bout-nav-enter 600ms var(--bout-ease) 180ms both; }
.js-ready .bout-arena__foot { animation: bout-action-enter 600ms var(--bout-ease) 280ms both; }
.bout-seam, .bout-crossing, .bout-blades { transition: transform 600ms var(--bout-ease); }
.bout-state-marker { transition: transform 240ms var(--bout-ease); }
.bout-arena__foot .btn { transition: transform 360ms var(--bout-ease); }
.bout-digit { display: inline-block; height: 1.25em; line-height: 1.25; overflow: hidden; vertical-align: -.18em; }
.bout-digit__reel { display: flex; flex-direction: column; }
.bout-digit__reel > span { display: block; height: 1.25em; }
.bout-digit__reel [data-previous-digit]::before { content: attr(data-previous-digit); }
.bout-digit__reel.is-rolling-up { animation: bout-digit-up 480ms var(--bout-ease) both; }
.bout-digit__reel.is-rolling-down { animation: bout-digit-down 480ms var(--bout-ease) both; }
.is-printing { animation: bout-paper-feed 600ms var(--bout-ease) both; }
.bout-call-stamp.is-called { animation: bout-judge-stamp 400ms var(--bout-ease) both; }
.js-ready .bout-draw-window { transform: scaleX(0); transform-origin: left; }
.js-ready .is-in .bout-draw-window { animation: bout-line-uncover 650ms var(--bout-ease) 80ms both; }
.bout-picto-motion { transform-box: fill-box; transform-origin: center; }
.is-in .bout-picto--pair .bout-picto-motion { animation: bout-blades-meet 650ms var(--bout-ease) 100ms both; }
.is-in .bout-picto--price .bout-picto-motion { animation: bout-price-shift 650ms var(--bout-ease) 100ms both; }
.is-in .bout-picto--judges .bout-picto-motion { animation: bout-middle-rise 650ms var(--bout-ease) 100ms both; }
.is-in .bout-picto--close .bout-picto-motion { animation: bout-compare 650ms var(--bout-ease) 100ms both; }
.is-in .bout-picto--fee .bout-picto-motion { animation: bout-fee-print 650ms var(--bout-ease) 100ms both; }
.is-in .bout-picto--back .bout-picto-motion { animation: bout-stake-return 650ms var(--bout-ease) 100ms both; }
.bout-motion-paused *, .bout-tab-hidden * { animation-play-state: paused !important; }
@keyframes bout-enter { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } }
@keyframes bout-light-enter { from { opacity: 0; transform: translateX(-24px); } to { opacity: 1; transform: translateX(0); } }
@keyframes bout-dark-enter { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: translateX(0); } }
@keyframes bout-nav-enter { from { opacity: 0; } to { opacity: 1; } }
@keyframes bout-action-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes bout-digit-up { from { transform: translateY(0); } to { transform: translateY(-50%); } }
@keyframes bout-digit-down { from { transform: translateY(-50%); } to { transform: translateY(0); } }
@keyframes bout-paper-feed { from { opacity: 0; transform: translateY(-16px) scaleY(.92); } to { opacity: 1; transform: translateY(0) scaleY(1); } }
@keyframes bout-judge-stamp { from { opacity: 0; transform: translateY(-12px) rotate(-5deg) scale(1.16); } to { opacity: 1; transform: translateY(0) rotate(-5deg) scale(1); } }
@keyframes bout-line-uncover { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes bout-blades-meet { from { transform: scale(.8); opacity: .4; } to { transform: scale(1); opacity: 1; } }
@keyframes bout-price-shift { from { transform: translateX(-12px); } to { transform: translateX(0); } }
@keyframes bout-middle-rise { from { transform: translateY(12px); } to { transform: translateY(0); } }
@keyframes bout-compare { from { transform: scaleY(.8); } to { transform: scaleY(1); } }
@keyframes bout-fee-print { from { transform: translateY(-12px); } to { transform: translateY(0); } }
@keyframes bout-stake-return { from { transform: translateX(16px); } to { transform: translateX(0); } }
.bout-tape dl > div { animation: bout-reading-breath 4800ms ease-in-out infinite alternate; }
.bout-tape dl > div:nth-child(2) { animation-delay: -1200ms; }
.bout-tape dl > div:nth-child(3) { animation-delay: -2400ms; }
.bout-tape dl > div:nth-child(4) { animation-delay: -3600ms; }
.bout-tape__corner--B dl > div { animation-direction: alternate-reverse; }
.bout-round-clock time { animation: bout-clock-tick 1000ms var(--bout-ease) infinite; }
.bout-live-offscreen, .bout-live-offscreen * { animation-play-state: paused !important; }
.bout-sheet-open { overflow: hidden; }
@keyframes bout-reading-breath { from { opacity: .88; } to { opacity: 1; } }
@keyframes bout-clock-tick { from { transform: translateY(2px); } to { transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .js-ready [data-reveal], .js-ready .bout-draw-window { opacity: 1; transform: none; }
  .bout-digit__reel.is-rolling-up { transform: translateY(-50%); }
  .bout-digit__reel.is-rolling-down { transform: translateY(0); }
}
