/* The board tells the story before its result curtain appears. */
.relay-board-frame[data-coop-flow],.duel-board-wrap[data-coop-flow]{isolation:isolate}
.relay-board-frame[data-coop-flow=start] .relay-cell:before{animation:coop-cell-arrive 440ms cubic-bezier(.2,.7,.2,1) both;animation-delay:calc((var(--x) + var(--y))*12ms)}
.relay-board-frame[data-coop-flow=start] .piece-skin{animation:coop-player-arrive 460ms cubic-bezier(.16,.8,.25,1) both}
.relay-board-frame[data-coop-flow=start] .player-1 .piece-skin{animation-delay:65ms}
.relay-board-frame[data-coop-flow=clear] .relay-piece.arrived .piece-skin{animation:coop-exit-seal 920ms cubic-bezier(.2,.7,.2,1) both}
.relay-board-frame[data-coop-flow=clear] .relay-goal{animation:coop-exit-ring 920ms ease-out both}
.relay-board-frame[data-coop-flow=clear] .relay-cell:before{animation:coop-cell-resolve 760ms ease-out both;animation-delay:calc((var(--x) + var(--y))*9ms)}
.relay-board-frame[data-coop-flow=clear]:after,.duel-board-wrap[data-coop-flow=win]:after,.duel-board-wrap[data-coop-flow=clear]:after{content:'';position:absolute;inset:0;z-index:5;pointer-events:none;background:linear-gradient(115deg,transparent 32%,#ffffff04 43%,#ffffff24 50%,#ffffff04 56%,transparent 67%);background-size:280% 100%;animation:coop-resolve-light 900ms cubic-bezier(.25,.6,.3,1) both}
.duel-board-wrap[data-coop-flow] #board .tile{animation-delay:calc(var(--flow-order,0)*18ms);animation-fill-mode:both}
.duel-board-wrap[data-coop-flow=start] #board .tile{animation-name:coop-color-arrive;animation-duration:300ms;animation-timing-function:cubic-bezier(.16,.8,.3,1)}
.duel-board-wrap:is([data-coop-flow=timeout],[data-coop-flow=lose]) #board .tile{transform-origin:50% 90%;animation:coop-color-collapse 1100ms linear both;animation-delay:var(--collapse-delay,0ms)}
.duel-board-wrap:is([data-coop-flow=timeout],[data-coop-flow=lose])[data-coop-settled] #board .tile{animation:none;transform:translate(var(--collapse-x,0%),var(--collapse-y,18%)) rotate(var(--collapse-turn,0deg)) scale(.985,.97);filter:saturate(.6) brightness(.78)}
.duel-board-wrap[data-coop-flow=win] #board .tile,.duel-board-wrap[data-coop-flow=clear] #board .tile{animation-name:coop-color-win;animation-duration:600ms;animation-timing-function:cubic-bezier(.2,.7,.2,1)}
.duel-board-wrap[data-coop-flow=draw] #board .tile{animation-name:coop-color-draw;animation-duration:560ms;animation-timing-function:ease-in-out}
.relay-curtain:not([hidden]),.together-page #duel-overlay:not([hidden]){animation:coop-curtain-arrive 560ms cubic-bezier(.2,.65,.3,1) both}
@keyframes coop-cell-arrive{from{opacity:.3;transform:scale(.82)}to{opacity:1;transform:scale(1)}}
@keyframes coop-player-arrive{0%{opacity:0;transform:scale(.35);filter:brightness(1.5)}70%{opacity:1;transform:scale(1.07)}100%{opacity:1;transform:scale(1);filter:brightness(1)}}
@keyframes coop-exit-seal{0%{transform:scale(1)}28%{transform:scale(.87);filter:brightness(1.3)}55%{transform:scale(1.13);filter:brightness(1.7)}100%{transform:scale(1);filter:brightness(1.1)}}
@keyframes coop-exit-ring{15%{transform:scale(1)}65%{transform:scale(1.85);box-shadow:inset 0 0 0 1px #dedede,0 0 26px #ffffff25}100%{transform:scale(1.2);box-shadow:inset 0 0 0 1px #929292}}
@keyframes coop-cell-resolve{0%,100%{filter:brightness(1)}45%{filter:brightness(1.45)}}
@keyframes coop-resolve-light{0%{opacity:0;background-position:100% 0}20%,70%{opacity:1}100%{opacity:0;background-position:0 0}}
@keyframes coop-color-arrive{from{opacity:.25;transform:scale(.88);filter:brightness(.8)}to{opacity:1;transform:scale(1);filter:brightness(1)}}
@keyframes coop-color-collapse{
 0%,12%{transform:translate(0,0) rotate(0) scale(1);filter:saturate(1) brightness(1)}
 28%{transform:translate(0,2%) rotate(0) scale(1.012,.97);filter:saturate(.94) brightness(.96);animation-timing-function:cubic-bezier(.55,.05,.85,.5)}
 66%{transform:translate(var(--collapse-x,0%),var(--collapse-hit-y,19%)) rotate(var(--collapse-turn,0deg)) scale(1.015,.935);filter:saturate(.75) brightness(.86);animation-timing-function:cubic-bezier(.15,.65,.25,1)}
 82%{transform:translate(var(--collapse-x,0%),calc(var(--collapse-y,18%) - 3%)) rotate(var(--collapse-turn,0deg)) scale(.985,.98);filter:saturate(.66) brightness(.81)}
 100%{transform:translate(var(--collapse-x,0%),var(--collapse-y,18%)) rotate(var(--collapse-turn,0deg)) scale(.985,.97);filter:saturate(.6) brightness(.78)}
}
@keyframes coop-color-win{0%{transform:scale(1)}35%{transform:scale(.94)}65%{transform:scale(1.025);filter:brightness(1.2)}100%{transform:scale(1);filter:brightness(1)}}
@keyframes coop-color-draw{50%{transform:scale(.95);filter:brightness(1.18)}100%{transform:scale(1);filter:brightness(1)}}
@keyframes coop-curtain-arrive{0%{opacity:0;transform:translateY(12px)}25%{opacity:0}100%{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.relay-board-frame[data-coop-flow] *,.duel-board-wrap[data-coop-flow] *,.relay-board-frame[data-coop-flow]:after,.duel-board-wrap[data-coop-flow]:after,.relay-curtain:not([hidden]),.together-page #duel-overlay:not([hidden]){animation:none!important}}
