/* live moments (moments.js): goal / behind / hugger badges, row flashes, score ticker, 100 fireworks */
table.stats td.name { position: relative; }
.mo-badge { position: absolute; left: 4px; bottom: calc(100% - 8px); z-index: 6; pointer-events: none; white-space: nowrap;
  font-weight: 900; font-size: 11px; letter-spacing: .08em; padding: 3px 9px; border-radius: 999px;
  transform-origin: 20% 100%; animation: mo-badge 7.8s cubic-bezier(.3,1.4,.5,1) forwards; }
.mo-badge.goal { background: var(--c1, #1F3A93); color: var(--c2, #FBBF24); box-shadow: 0 4px 12px rgba(0,0,0,.25), inset 0 0 0 1px rgba(255,255,255,.25); }
.mo-badge.behind { background: #fff; color: var(--c1, #1F3A93); box-shadow: 0 2px 8px rgba(15,23,42,.2); }
.mo-badge.hug { background: linear-gradient(135deg, #f97316, #ec4899); color: #fff; box-shadow: 0 4px 14px rgba(236,72,153,.4); }
.mo-badge.hug::before { content: ""; display: inline-block; width: 12px; height: 12px; margin-right: 5px; vertical-align: -2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='6' r='2.6'/%3E%3Ccircle cx='16' cy='6' r='2.6'/%3E%3Cpath d='M3 20c0-4 2.5-7 5-7s3 1.5 4 3c1-1.5 1.5-3 4-3s5 3 5 7'/%3E%3Cpath d='M6.5 14.5c2 2 9 2 11 0'/%3E%3C/svg%3E") center/contain no-repeat; }
@keyframes mo-badge { 0% { opacity: 0; transform: translateY(6px) scale(.3); } 4% { opacity: 1; transform: translateY(0) scale(1.15); }
  7.5% { transform: translateY(0) scale(1); } 93% { opacity: 1; transform: translateY(-2px); } 100% { opacity: 0; transform: translateY(-12px) scale(.95); } }
.mo-badge.super { background: linear-gradient(135deg, #1d4ed8, #dc2626); color: #FDE047; box-shadow: 0 4px 14px rgba(29,78,216,.4); }
.mo-badge.super::before { content: ""; display: inline-block; width: 13px; height: 13px; margin-right: 5px; vertical-align: -2px; background: url("/static/icons/cape.svg") center/contain no-repeat; }
.mo-badge.hurt { background: linear-gradient(135deg, #ef4444, #b91c1c); color: #fff; box-shadow: 0 4px 14px rgba(220,38,38,.4); }
.mo-badge.hurt::before { content: ""; display: inline-block; width: 13px; height: 13px; margin-right: 5px; vertical-align: -2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg transform='rotate(-45 12 12)'%3E%3Crect x='1.5' y='7.5' width='21' height='9' rx='4.5' fill='%23F5C9A0' stroke='white' stroke-width='1.4'/%3E%3Crect x='8.5' y='7.5' width='7' height='9' fill='%23E8A97A'/%3E%3Ccircle cx='10.5' cy='10.5' r='.8' fill='%23b45309'/%3E%3Ccircle cx='13.5' cy='10.5' r='.8' fill='%23b45309'/%3E%3Ccircle cx='10.5' cy='13.5' r='.8' fill='%23b45309'/%3E%3Ccircle cx='13.5' cy='13.5' r='.8' fill='%23b45309'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat; }
.mo-badge.out { background: #334155; color: #fff; box-shadow: 0 4px 12px rgba(15,23,42,.35); }
.mo-badge.out::before { content: ""; display: inline-block; width: 12px; height: 12px; margin-right: 5px; vertical-align: -2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath d='M22 54V16M12 26l10-10 10 10' stroke='%234ade80' stroke-width='8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M42 10v38M32 38l10 10 10-10' stroke='%23f87171' stroke-width='8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat; }
tr.mo-hurt td { animation: mo-hurtrow 6.6s ease-out; }
tr.mo-out td { animation: mo-outrow 6s ease-out; }
@keyframes mo-hurtrow { 4% { background-color: rgba(239,68,68,.32); } 60% { background-color: rgba(239,68,68,.14); } }
@keyframes mo-outrow { 5% { background-color: rgba(100,116,139,.3); } 60% { background-color: rgba(100,116,139,.14); } }
tr.mo-goal td { animation: mo-goalrow 7.2s ease-out; }
tr.mo-behind td { animation: mo-behindrow 4.2s ease-out; }
tr.mo-hug td { animation: mo-hugrow 5.4s ease-out; }
tr.mo-super td { animation: mo-superrow 6s ease-out; }
@keyframes mo-goalrow { 4% { background-color: color-mix(in srgb, var(--c2, #FBBF24) 55%, transparent); } 12% { background-color: color-mix(in srgb, var(--c1, #1F3A93) 22%, transparent); } 60% { background-color: color-mix(in srgb, var(--c1, #1F3A93) 12%, transparent); } }
@keyframes mo-behindrow { 7% { background-color: color-mix(in srgb, var(--c2, #FBBF24) 25%, transparent); } 60% { background-color: color-mix(in srgb, var(--c2, #FBBF24) 12%, transparent); } }
@keyframes mo-hugrow { 6% { background-color: rgba(236,72,153,.22); } 60% { background-color: rgba(236,72,153,.1); } }
@keyframes mo-superrow { 5% { background-color: rgba(220,38,38,.25); } 15% { background-color: rgba(29,78,216,.2); } 60% { background-color: rgba(29,78,216,.1); } }
.mo-bump { display: inline-block; animation: mo-bump .7s cubic-bezier(.3,1.6,.5,1); }
td.mo-bump { display: table-cell; }
@keyframes mo-bump { 35% { transform: scale(1.5); color: var(--c1, #1F3A93); } }
.mo-roll { display: inline-block; position: relative; overflow: hidden; height: 1.2em; vertical-align: bottom; }
.mo-roll > span { display: block; line-height: 1.2em; transition: transform .55s cubic-bezier(.22,.61,.36,1); }
.mo-roll > span.in { position: absolute; left: 0; top: 0; transform: translateY(100%); }
.mo-roll.go > span { transform: translateY(-100%); } .mo-roll.go > span.in { transform: translateY(0); }
.gs-team { border-radius: 14px; transition: background .6s; }
.gs-team.mo-glow { background: linear-gradient(90deg, color-mix(in srgb, var(--c1) 28%, transparent), color-mix(in srgb, var(--c2) 35%, transparent)); }
.mo-fx { position: fixed; inset: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 90; }
.tonbox.mo-fresh { border-color: transparent !important; box-shadow: none !important; background: transparent !important; }
.tonbox.mo-bloom { box-shadow: 0 0 22px rgba(245,180,0,.8), inset 0 0 8px rgba(255,215,0,.4) !important; }
.mo-tonsvg { position: absolute; inset: -2.5px; width: calc(100% + 5px); height: calc(100% + 5px); overflow: visible; pointer-events: none; }
.mo-tonsvg rect { fill: none; stroke-width: 2.6; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: 100; }
.mo-tonsvg rect.go { transition: stroke-dashoffset 1.1s cubic-bezier(.4,0,.2,1); stroke-dashoffset: 0; }
.gs-team { position: relative; }
.mo-posts { position: relative; display: inline-flex; align-items: center; gap: 4px; height: 44px; margin: -10px 0 -10px 10px; vertical-align: middle;
  pointer-events: none; opacity: 0; transform: scale(.85); transform-origin: 0 50%; transition: opacity .3s, transform .4s cubic-bezier(.3,1.4,.5,1); }
.mo-posts.on { opacity: 1; transform: none; }
.mo-posts svg { width: 58px; height: 44px; overflow: visible; flex: none; filter: drop-shadow(0 3px 6px rgba(15,23,42,.22)); }
.mo-word { font-weight: 900; font-size: 13px; letter-spacing: .06em; white-space: nowrap; opacity: 0; transform: scale(.3); transform-origin: 0 50%;
  transition: transform .45s cubic-bezier(.3,1.6,.5,1), opacity .2s; }
.mo-word.b { color: #475569; } .mo-word.on { opacity: 1; transform: none; }
html.dark .mo-word.b { color: #cbd5e1; }
.pname-wrap { position: relative; display: inline-block; }
.mo-trail { position: absolute; left: 0; bottom: -3px; height: 2px; width: 0; border-radius: 1px; animation: mo-trail 4.5s linear forwards; pointer-events: none; }
@keyframes mo-trail { 0% { width: 0; } 28% { width: 100%; opacity: 1; } 92% { width: 100%; opacity: 1; } 100% { width: 100%; opacity: 0; } }
.mo-rollball { position: absolute; left: -14px; bottom: -6px; width: 14px; height: 9px; pointer-events: none; animation: mo-rollx 1.3s cubic-bezier(.4,.1,.3,1) forwards; }
.mo-rollball svg { width: 100%; height: 100%; overflow: visible; animation: mo-spin .33s linear 4; }
@keyframes mo-rollx { 0% { opacity: 0; transform: translateX(0); } 8% { opacity: 1; } 88% { opacity: 1; } 100% { opacity: 0; transform: translateX(calc(var(--w) + 14px)); } }
@keyframes mo-spin { to { transform: rotate(360deg); } }
.mo-ton { position: absolute; left: 50%; bottom: 100%; z-index: 7; pointer-events: none; font-weight: 900; font-size: 22px;
  background: linear-gradient(180deg, #FFE680, #FFB800); -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,.35)); animation: mo-ton 6.6s cubic-bezier(.3,1.5,.5,1) forwards; }
@keyframes mo-ton { 0% { opacity: 0; transform: translate(-50%, 8px) scale(.2); } 5% { opacity: 1; transform: translate(-50%, -2px) scale(1.35); }
  10% { transform: translate(-50%, 0) scale(1); } 92% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -14px) scale(.9); } }
@media (prefers-reduced-motion: reduce) { .mo-posts, .mo-rollball, .mo-trail { display: none !important; } .mo-badge, .mo-ton, tr.mo-goal td, tr.mo-behind td, tr.mo-hug td, tr.mo-hurt td, tr.mo-out td, tr.mo-super td, .mo-bump { animation: none !important; } }
