/* Season ceremony. The pick and result screens are allowed to be theatrical;
   this page is the most theatrical of all. Every animation stops under
   prefers-reduced-motion. Placement colours are used for placements only. */

.ceremony-page { --tone: var(--color-gold); --tone-light: #fff4c7; --tone-deep: #a8761f; --tone-glow: rgb(244 201 93 / 34%); min-height: 100svh; background: radial-gradient(70rem 40rem at 50% -10%, rgb(34 211 238 / 7%), transparent 60%), #05080f; isolation: isolate; overflow-x: hidden; }
.ceremony-page[data-tone="silver"], .tone-silver { --tone: var(--color-silver); --tone-light: #ffffff; --tone-deep: #6f7d90; --tone-glow: rgb(199 208 220 / 26%); }
.ceremony-page[data-tone="bronze"], .tone-bronze { --tone: var(--color-bronze); --tone-light: #ffd9c2; --tone-deep: #87482a; --tone-glow: rgb(216 138 100 / 28%); }
.ceremony-page[data-tone="gold"], .tone-gold { --tone: var(--color-gold); --tone-light: #fff4c7; --tone-deep: #a8761f; --tone-glow: rgb(244 201 93 / 34%); }
.ceremony-page[data-tone="neutral"] { --tone: var(--color-primary); --tone-light: #cffafe; --tone-deep: #0e5f74; --tone-glow: rgb(34 211 238 / 16%); }
.ceremony-page.is-theater { height: 100svh; overflow: hidden; }
.ceremony-page::after { content: none; }

/* Atmosphere layers */
.ceremony-stars, .ceremony-rays, .ceremony-spotlight, .ceremony-flash, .ceremony-fx { position: fixed; inset: 0; pointer-events: none; }
.ceremony-stars { z-index: 0; opacity: .7; background-image: radial-gradient(circle, rgb(255 255 255 / 70%) 0 1px, transparent 1.4px), radial-gradient(circle, rgb(34 211 238 / 55%) 0 1px, transparent 1.4px), radial-gradient(circle, rgb(244 201 93 / 50%) 0 1px, transparent 1.5px), radial-gradient(circle, rgb(214 107 255 / 45%) 0 1px, transparent 1.4px); background-size: 173px 211px, 241px 193px, 317px 271px, 389px 337px; background-position: 13px 29px, 97px 151px, 211px 47px, 53px 233px; animation: ceremony-stars 120s linear infinite; }
.ceremony-rays { z-index: 1; top: -40vmax; right: -40vmax; bottom: -40vmax; left: -40vmax; opacity: 0; background: repeating-conic-gradient(from 0deg at 50% 50%, color-mix(in srgb, var(--tone) 16%, transparent) 0deg 5deg, transparent 5deg 15deg); mask-image: radial-gradient(circle at 50% 50%, #000 0 18%, transparent 52%); transform: translateY(-14vh); transition: opacity 900ms ease, background 900ms ease; animation: ceremony-rays-turn 60s linear infinite; }
.ceremony-spotlight { z-index: 2; right: -25vw; left: -25vw; opacity: .85; background: radial-gradient(38rem 46rem at 50% -8%, var(--tone-glow), transparent 64%), radial-gradient(60rem 22rem at 50% 104%, color-mix(in srgb, var(--tone) 10%, transparent), transparent 70%); transition: background 900ms ease, opacity 600ms ease; }
.ceremony-flash { z-index: 9; opacity: 0; background: radial-gradient(circle at 50% 32%, #fff, var(--tone-light) 30%, transparent 75%); }
.ceremony-fx { z-index: 7; width: 100vw; height: 100vh; }

.moment-search .ceremony-spotlight { animation: ceremony-search 1.8s ease-in-out infinite alternate; }
.moment-search .ceremony-rays { opacity: 0; }
.moment-impact .ceremony-rays { opacity: .55; }
.moment-impact .ceremony-flash { animation: ceremony-flash 700ms ease-out; }
.moment-glory .ceremony-rays { opacity: 1; animation-duration: 24s; }
.moment-glory .ceremony-flash { animation: ceremony-flash 1300ms ease-out; }
.moment-glory .ceremony-spotlight { opacity: 1; }
.is-finale .ceremony-rays { opacity: .32; }

/* Chrome */
.ceremony-bar { position: fixed; z-index: 8; top: 0; right: 0; left: 0; display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: calc(.75rem + env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) .75rem max(1rem, env(safe-area-inset-left)); background: linear-gradient(rgb(5 8 15 / 85%), transparent); }
.ceremony-bar .brand { font-size: 1.1rem; }
.ceremony-controls { display: flex; gap: .4rem; }
.ceremony-control { min-height: 36px; padding: .4rem .7rem; color: var(--color-text-muted); border: 1px solid var(--color-border); border-radius: 999px; background: rgb(8 13 22 / 70%); font: 700 .75rem/1 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .08em; text-transform: uppercase; backdrop-filter: blur(6px); }
.ceremony-control:hover, .ceremony-control:focus-visible { color: var(--color-text); border-color: var(--tone); }
.ceremony-control[aria-pressed="false"] { color: var(--color-text-subtle); text-decoration: line-through; }
.ceremony-mode { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .3rem .7rem; margin: 0; padding: .4rem .75rem; color: var(--color-public); border: 1px dashed color-mix(in srgb, var(--color-public) 60%, transparent); border-radius: 999px; background: rgb(8 13 22 / 80%); font: 700 .75rem/1.3 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .06em; text-align: center; }
.ceremony-mode a { min-height: 0; color: var(--color-primary); }
.ceremony-mode[hidden] { display: none; }
.ceremony-next { position: fixed; z-index: 8; right: max(1rem, env(safe-area-inset-right)); bottom: calc(1rem + env(safe-area-inset-bottom)); min-height: 44px; padding: .55rem 1rem; color: var(--color-text); border: 1px solid color-mix(in srgb, var(--tone) 55%, var(--color-border)); border-radius: 999px; background: rgb(8 13 22 / 78%); font-weight: 800; backdrop-filter: blur(6px); }
.ceremony-next:hover, .ceremony-next:focus-visible { border-color: var(--tone); box-shadow: 0 0 22px var(--tone-glow); }
.ceremony-footer { position: relative; z-index: 3; padding: var(--space-5) 1rem calc(var(--space-5) + env(safe-area-inset-bottom)); text-align: center; }
.is-theater .ceremony-footer { display: none; }

/* Theater and scenes */
.ceremony-theater { position: relative; z-index: 3; display: grid; place-items: center; height: 100svh; padding: 4.5rem 1rem 4.5rem; }
.is-finale .ceremony-theater { display: none; }
.ceremony-scene { display: grid; justify-items: center; gap: var(--space-3); width: min(1100px, 100%); text-align: center; }
.ceremony-scene .eyebrow { color: var(--tone); }
.ceremony-scene h1 { margin: 0; font-size: clamp(2.8rem, 10vw, 6.5rem); letter-spacing: -.06em; background: linear-gradient(180deg, #fff 20%, var(--tone-light) 55%, var(--tone) 100%); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 6px 30px var(--tone-glow)); }
.ceremony-scene .lede { max-width: 34rem; margin: 0; color: var(--color-text-muted); font-size: clamp(1rem, 2.6vw, 1.25rem); }

.scene-gate { animation: ceremony-rise 900ms cubic-bezier(.2, .8, .2, 1) both; }
.gate-emblem { width: clamp(140px, 26vw, 220px); filter: drop-shadow(0 12px 40px var(--tone-glow)); animation: ceremony-float 4.5s ease-in-out infinite; }
.ceremony-begin { margin-top: var(--space-3); min-height: 54px; padding: .8rem 1.6rem; font-size: 1.05rem; border-color: var(--color-gold); color: #1d1405; background: linear-gradient(180deg, #fff4c7, var(--color-gold) 55%, #d9a43c); box-shadow: 0 0 0 0 rgb(244 201 93 / 50%); animation: ceremony-beckon 2.4s ease-in-out infinite; }
.ceremony-begin:hover { background: linear-gradient(180deg, #fffbe6, #f8d77f 55%, #e2b14d); }
.gate-hint { margin: 0; color: var(--color-text-subtle); font-size: .8rem; }
.ceremony-link-button { min-height: 36px; padding: .3rem .5rem; color: var(--color-text-muted); border: 0; background: none; text-decoration: underline; text-underline-offset: 3px; }
.ceremony-link-button:hover { color: var(--color-text); }

.scene-prologue { gap: var(--space-2); }
.prologue-line { margin: 0; font-size: clamp(1.4rem, 4.6vw, 2.8rem); font-weight: 850; letter-spacing: -.04em; transition: opacity 700ms ease, transform 700ms ease, font-size 700ms ease, color 700ms ease; animation: ceremony-line-in 900ms cubic-bezier(.2, .8, .2, 1) both; }
.prologue-line.is-past { opacity: .32; transform: scale(.9); color: var(--color-text-muted); font-size: clamp(1rem, 3vw, 1.6rem); }
.prologue-line.is-final { color: var(--tone-light); text-shadow: 0 0 30px var(--tone-glow); }

.scene-announce { gap: var(--space-2); }
.announce-kicker { margin: 0; color: var(--tone); font: 700 .8rem/1.2 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .3em; text-transform: uppercase; animation: ceremony-line-in 700ms ease both; }
.announce-line { margin: 0; font-size: clamp(2.2rem, 8vw, 5.4rem); font-weight: 900; letter-spacing: -.055em; line-height: 1; animation: ceremony-announce 1.9s cubic-bezier(.2, .8, .2, 1) both; }
.scene-drumroll .announce-line { animation: ceremony-announce 1.2s cubic-bezier(.2, .8, .2, 1) both, ceremony-tremble 120ms linear 1.2s infinite; }

/* Reveal cards */
.reveal-row { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-4); width: 100%; }
.ceremony-reveal { position: relative; display: grid; justify-items: center; gap: .55rem; width: min(40rem, 100%); padding: clamp(1rem, 3vw, 1.6rem); border: 1px solid color-mix(in srgb, var(--tone) 50%, transparent); border-radius: 22px; background: linear-gradient(180deg, rgb(17 26 40 / 82%), rgb(8 13 22 / 90%)); box-shadow: 0 0 0 1px rgb(255 255 255 / 4%) inset, 0 30px 80px rgb(0 0 0 / 55%), 0 0 70px var(--tone-glow); backdrop-filter: blur(6px); animation: ceremony-card-in 1s cubic-bezier(.16, 1, .3, 1) both; }
.ceremony-reveal::before { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: linear-gradient(115deg, transparent 30%, rgb(255 255 255 / 12%) 45%, transparent 60%) -200% 0 / 250% 100% no-repeat; animation: ceremony-sheen 1.6s ease 900ms both; }
.ceremony-reveal.is-compact { width: min(30rem, 100%); }
.reveal-emblem { width: clamp(84px, 16vw, 124px); margin-top: calc(-1 * clamp(2.6rem, 7vw, 3.8rem)); filter: drop-shadow(0 10px 30px var(--tone-glow)); animation: ceremony-emblem-drop 1.1s cubic-bezier(.34, 1.56, .64, 1) both; }
.is-champion .reveal-emblem { width: clamp(130px, 24vw, 200px); animation: ceremony-emblem-drop 1.1s cubic-bezier(.34, 1.56, .64, 1) both, ceremony-float 4s ease-in-out 1.2s infinite; }
.ceremony-emblem { display: block; width: 100%; height: auto; overflow: visible; }
.reveal-title { margin: 0; color: var(--tone); font: 800 .78rem/1.2 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .26em; text-transform: uppercase; animation: ceremony-line-in 600ms ease 250ms both; }
.reveal-name { display: flex; flex-wrap: wrap; justify-content: center; margin: 0; font-size: clamp(2.4rem, 9vw, 5rem); line-height: 1; letter-spacing: -.05em; overflow-wrap: anywhere; }
.is-champion .reveal-name { font-size: clamp(2.8rem, 12vw, 6.6rem); }
.is-compact .reveal-name { font-size: clamp(2rem, 6vw, 3.4rem); }
.reveal-letter { display: inline-block; background: linear-gradient(180deg, #fff 25%, var(--tone-light) 60%, var(--tone) 100%); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 4px 22px var(--tone-glow)); animation: ceremony-letter 700ms cubic-bezier(.34, 1.56, .64, 1) calc(320ms + var(--i, 0) * 55ms) both; }
.reveal-points { margin: 0; color: var(--color-text-muted); font-weight: 700; animation: ceremony-line-in 600ms ease 500ms both; }
.reveal-points strong { color: var(--tone-light); font-size: clamp(1.6rem, 4.6vw, 2.4rem); font-variant-numeric: tabular-nums; }
.reveal-stats { display: flex; flex-wrap: wrap; justify-content: center; gap: .45rem; margin: .2rem 0 0; padding: 0; list-style: none; }
.reveal-stats li { display: grid; min-width: 6.4rem; padding: .45rem .7rem; border: 1px solid var(--color-border); border-radius: 10px; background: rgb(8 13 22 / 70%); animation: ceremony-line-in 500ms ease calc(900ms + var(--i, 0) * 110ms) both; }
.reveal-stats strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.reveal-stats span { color: var(--color-text-subtle); font: 700 .75rem/1.2 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .04em; text-transform: uppercase; }
.reveal-signature { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--space-3); width: 100%; margin: .35rem 0 0; padding: .8rem .95rem; text-align: left; border: 1px solid color-mix(in srgb, var(--tone) 40%, var(--color-border)); border-left: 4px solid var(--tone); border-radius: 12px; background: rgb(8 13 22 / 72%); animation: ceremony-slide-in 800ms cubic-bezier(.16, 1, .3, 1) 1.6s both; }
.reveal-signature figcaption { display: grid; gap: .2rem; min-width: 0; }
.reveal-signature .eyebrow { margin: 0; color: var(--tone); }
.reveal-signature strong { font-size: clamp(1rem, 2.4vw, 1.2rem); line-height: 1.3; }
.reveal-signature-context { color: var(--color-text-subtle); font-size: .8rem; }
.reveal-signature-portraits { display: flex; }
.reveal-portrait { display: grid; place-items: center; overflow: hidden; width: 60px; height: 60px; border: 3px solid var(--race-color, var(--color-random)); border-radius: 50%; background: var(--color-surface-elevated); color: var(--color-text); font-weight: 900; box-shadow: 0 0 18px color-mix(in srgb, var(--race-color, var(--color-random)) 40%, transparent); }
.reveal-portrait + .reveal-portrait { margin-left: -14px; }
.reveal-portrait img { width: 100%; height: 100%; object-fit: cover; }
.race-terran { --race-color: var(--color-terran); } .race-protoss { --race-color: var(--color-protoss); } .race-zerg { --race-color: var(--color-zerg); } .race-random { --race-color: var(--color-random); }
.reveal-career { margin: .1rem 0 0; color: var(--color-text-muted); font-style: italic; animation: ceremony-line-in 600ms ease 2.2s both; }
.reveal-you { margin: 0; padding: .25rem .65rem; color: #1d1405; border-radius: 999px; background: var(--tone); font: 800 .75rem/1.3 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .12em; text-transform: uppercase; animation: ceremony-letter 600ms cubic-bezier(.34, 1.56, .64, 1) 2.5s both; }
.champion-margin { margin: var(--space-2) 0 0; color: var(--tone-light); font-size: clamp(1rem, 2.6vw, 1.3rem); font-weight: 800; animation: ceremony-line-in 700ms ease 3s both; }
.is-champion { border-width: 2px; box-shadow: 0 0 0 1px rgb(255 255 255 / 6%) inset, 0 30px 90px rgb(0 0 0 / 60%), 0 0 120px var(--tone-glow); animation: ceremony-card-in 1.1s cubic-bezier(.16, 1, .3, 1) both, ceremony-champion-glow 3s ease-in-out 1.2s infinite alternate; }

/* Finale */
.ceremony-finale { position: relative; z-index: 3; width: min(1100px, calc(100% - 2rem)); margin: 0 auto; padding: 5.5rem 0 var(--space-6); outline: none; }
.finale-hero { display: grid; justify-items: center; gap: var(--space-2); text-align: center; animation: ceremony-rise 800ms ease both; }
.finale-hero .eyebrow { margin: 0; color: var(--color-gold); }
.finale-hero h1 { margin: 0; font-size: clamp(2.4rem, 8vw, 4.8rem); background: linear-gradient(180deg, #fff 20%, #fff4c7 55%, var(--color-gold)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.finale-viewer { max-width: 38rem; margin: 0; color: var(--color-text-muted); font-size: 1.05rem; }
.finale-podium { display: grid; grid-template-columns: repeat(var(--columns, 3), minmax(0, 1fr)); align-items: end; gap: clamp(.5rem, 2vw, 1.1rem); max-width: 860px; margin: var(--space-6) auto 0; padding: 0; list-style: none; }
.finale-podium:has(> :nth-child(2):last-child) { --columns: 2; max-width: 600px; }
.finale-podium:has(> :only-child) { --columns: 1; max-width: 320px; }
.finale-column { display: grid; justify-items: center; gap: .6rem; min-width: 0; animation: ceremony-rise 900ms cubic-bezier(.16, 1, .3, 1) both; }
.finale-column:nth-child(1) { animation-delay: 250ms; } .finale-column:nth-child(2) { animation-delay: 0ms; } .finale-column:nth-child(3) { animation-delay: 450ms; }
.finale-emblem { width: clamp(60px, 12vw, 96px); filter: drop-shadow(0 8px 26px var(--tone-glow)); }
.tone-gold .finale-emblem { width: clamp(96px, 17vw, 150px); animation: ceremony-float 4.5s ease-in-out infinite; }
.finale-names { display: grid; gap: .35rem; width: 100%; text-align: center; }
.finale-name { display: grid; margin: 0; }
.finale-name strong { overflow-wrap: anywhere; font-size: clamp(1rem, 2.6vw, 1.35rem); }
.finale-name span { color: var(--tone); font-weight: 800; font-variant-numeric: tabular-nums; }
.finale-name.is-you strong::after { content: " · You"; color: var(--tone); }
.finale-step { display: grid; place-items: start center; width: 100%; padding-top: .8rem; border: 1px solid color-mix(in srgb, var(--tone) 55%, transparent); border-bottom: 0; border-radius: 14px 14px 0 0; background: linear-gradient(180deg, color-mix(in srgb, var(--tone) 26%, var(--color-surface)), var(--color-surface) 70%); box-shadow: 0 -10px 40px var(--tone-glow); }
.finale-step span { color: var(--tone-light); font-size: clamp(1.4rem, 4vw, 2.2rem); font-weight: 900; letter-spacing: -.04em; }
.tone-gold .finale-step { height: clamp(150px, 22vw, 210px); }
.tone-silver .finale-step { height: clamp(110px, 16vw, 150px); }
.tone-bronze .finale-step { height: clamp(80px, 11vw, 110px); }
.finale-honorable { margin: var(--space-4) auto 0; max-width: 46rem; color: var(--color-text-subtle); text-align: center; font-size: .9rem; }
.finale-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2); margin-top: var(--space-5); }
.finale-actions .primary { margin-top: 0; }
.finale-cards, .finale-hall { margin-top: var(--space-6); padding-top: var(--space-6); border-top: 1px solid var(--color-border); }
.finale-cards .eyebrow, .finale-hall .eyebrow { margin: 0; }
.trophy-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: var(--space-4); margin-top: var(--space-4); }
.trophy-card { display: grid; gap: .6rem; align-content: start; }
.trophy-card-label { margin: 0; color: var(--tone); font: 700 .75rem/1.2 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .12em; text-transform: uppercase; }
.trophy-card-canvas { width: 100%; height: auto; aspect-ratio: 4 / 5; border-radius: 14px; background: var(--color-surface); box-shadow: 0 18px 50px rgb(0 0 0 / 50%), 0 0 40px var(--tone-glow); transition: transform 240ms ease; }
.trophy-card-canvas:hover { transform: translateY(-4px) rotate(-.5deg); }
.trophy-card-actions { display: flex; flex-wrap: wrap; gap: .45rem; }
.trophy-card-actions .primary { margin-top: 0; }
.hall-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: var(--space-3); margin: var(--space-4) 0 0; padding: 0; list-style: none; }
.hall-season { padding: var(--space-4); border: 1px solid var(--color-border); border-radius: 14px; background: linear-gradient(180deg, var(--color-surface-elevated), var(--color-surface)); }
.hall-season.is-new { border-color: color-mix(in srgb, var(--color-gold) 70%, transparent); box-shadow: 0 0 40px rgb(244 201 93 / 16%); }
.hall-season h3 { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0 0 var(--space-2); }
.hall-badge { padding: .15rem .45rem; color: #1d1405; border-radius: 999px; background: var(--color-gold); font: 800 .75rem/1.3 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .08em; text-transform: uppercase; }
.hall-placements { display: grid; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.hall-placements li { display: grid; grid-template-columns: 2.6rem minmax(0, 1fr) auto; align-items: baseline; gap: .5rem; }
.hall-rank { color: var(--tone); font: 800 .8rem/1 ui-monospace, SFMono-Regular, Consolas, monospace; }
.hall-placements strong { overflow-wrap: anywhere; }
.hall-points { color: var(--color-text-subtle); font-size: .85rem; font-variant-numeric: tabular-nums; }

@media (max-width: 720px) {
  .ceremony-bar { flex-wrap: wrap; row-gap: .5rem; }
  .ceremony-bar .brand { font-size: 1rem; }
  .ceremony-control { padding: .4rem .6rem; }
  .ceremony-wide-only { display: none; }
  .ceremony-mode { order: 3; width: 100%; border-radius: 10px; }
  .ceremony-theater { padding: 5rem .75rem 4.5rem; overflow-y: auto; place-items: start center; }
  .ceremony-page:has(.ceremony-mode:not([hidden])) .ceremony-theater { padding-top: 8rem; }
  .ceremony-scene { margin: auto 0; }
  .reveal-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); width: 100%; gap: .3rem; }
  .reveal-stats li { min-width: 0; padding: .4rem .25rem; }
  .reveal-stats span { font-size: .75rem; letter-spacing: 0; overflow-wrap: anywhere; }
  .reveal-signature { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .reveal-portrait { width: 52px; height: 52px; }
  .ceremony-finale { padding-top: 5rem; }
  .ceremony-page:has(.ceremony-mode:not([hidden])) .ceremony-finale { padding-top: 8rem; }
}

@keyframes ceremony-stars { to { background-position: 13px -1028px, 97px -906px, 211px -1010px, 53px -824px; } }
@keyframes ceremony-rays-turn { to { rotate: 360deg; } }
@keyframes ceremony-search { from { transform: translateX(-16vw); } to { transform: translateX(16vw); } }
@keyframes ceremony-flash { 0% { opacity: 0; } 12% { opacity: .9; } 100% { opacity: 0; } }
@keyframes ceremony-rise { from { opacity: 0; transform: translateY(26px); } }
@keyframes ceremony-float { 50% { transform: translateY(-9px); } }
@keyframes ceremony-beckon { 50% { box-shadow: 0 0 0 12px rgb(244 201 93 / 0%), 0 0 36px rgb(244 201 93 / 45%); } }
@keyframes ceremony-line-in { from { opacity: 0; transform: translateY(14px); filter: blur(6px); } }
@keyframes ceremony-announce { 0% { opacity: 0; transform: scale(1.35); filter: blur(14px); letter-spacing: .05em; } 60% { opacity: 1; filter: blur(0); } 100% { transform: scale(1); letter-spacing: -.055em; } }
@keyframes ceremony-tremble { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(1px, -1px); } 50% { transform: translate(-1px, 1px); } 75% { transform: translate(1px, 1px); } }
@keyframes ceremony-card-in { from { opacity: 0; transform: translateY(60px) scale(.9); filter: blur(10px); } }
@keyframes ceremony-sheen { to { background-position: 200% 0; } }
@keyframes ceremony-emblem-drop { 0% { opacity: 0; transform: translateY(-60px) scale(.4) rotate(-14deg); } 100% { opacity: 1; transform: none; } }
@keyframes ceremony-letter { from { opacity: 0; transform: translateY(.5em) scale(.6) rotate(6deg); } }
@keyframes ceremony-slide-in { from { opacity: 0; transform: translateX(-24px); } }
@keyframes ceremony-champion-glow { to { box-shadow: 0 0 0 1px rgb(255 255 255 / 8%) inset, 0 30px 90px rgb(0 0 0 / 60%), 0 0 170px rgb(244 201 93 / 45%); } }

@media (prefers-reduced-motion: reduce) {
  .ceremony-page *, .ceremony-page *::before, .ceremony-invite, .ceremony-invite * { animation: none !important; transition: none !important; }
  .ceremony-stars, .ceremony-rays, .ceremony-flash { animation: none !important; }
  .ceremony-flash { display: none; }
  .ceremony-reveal::before { display: none; }
}
