/* Original MatMeg reveal, with quiet delayed light on separate layers.
   The original card, halo, shine and sparkle timeline stays unchanged. */
.screen.pass-reveal { width:min(100%,32rem); min-height:0; padding-top:8px; padding-bottom:max(24px,var(--safe-bottom,0px)); text-align:center; }
.pass-reveal-heading .eyebrow { justify-content:center; margin:4px 0 8px; color:var(--muted); }
.pass-reveal-heading h1 { margin:0; font-size:clamp(2rem,8.5vw,2.75rem); line-height:1.02; letter-spacing:-.045em; }
.pass-reveal-stage { position:relative; isolation:isolate; width:100%; margin:20px auto 22px; padding:12px 16px 8px; perspective:900px; }
.pass-reveal-card { position:relative; width:min(100%,264px); margin:auto; transform-origin:50% 60%; filter:drop-shadow(0 14px 14px #701a422b); }
.pass-reveal-card .festival-ticket.compact { width:100%; max-width:none; margin:0; }
.pass-reveal-card .ticket-owner strong { font-weight:650; }
.pass-reveal-card .ticket-band { font-weight:650; }
.pass-reveal-card .demo-stamp { font-size:.625rem; }
.pass-reveal-halo { position:absolute; z-index:-1; inset:0 -10px; border-radius:50%; background:radial-gradient(ellipse,#fff3f8b8 0%,#fff3f844 48%,transparent 72%); pointer-events:none; }
.pass-reveal-shine { display:block; position:absolute; z-index:2; inset:0; overflow:hidden; border-radius:22px; pointer-events:none; }
.pass-reveal-shine::before { content:""; position:absolute; inset:-40% -130%; background:linear-gradient(110deg,transparent 42%,#fff3f840 46%,#ffffffbb 49%,#ffe3f699 51%,#fff3f826 55%,transparent 59%); transform:translateX(60%); opacity:0; }
.pass-reveal-spark { position:absolute; z-index:3; color:#931647; font-size:1.7rem; line-height:1; pointer-events:none; opacity:0; }
.spark-one { left:0; top:19%; --spark-turn:-16deg; }
.spark-two { right:1px; top:35%; font-size:1.1rem; --spark-turn:24deg; }
.spark-three { left:7px; bottom:16%; font-size:1rem; --spark-turn:18deg; }
.spark-four { right:12px; top:3%; --spark-turn:-24deg; }
.pass-reveal-actions { width:100%; margin-top:0; }
.pass-reveal-actions > p { margin:0 0 14px; color:var(--ink); font-size:.9375rem; line-height:1.45; }
.pass-reveal-continue { border-radius:99px; gap:12px; font-weight:600; }
.pass-reveal-continue > span { flex:none; }
/* Retain the finite animations' final frames after completion. */
.has-reveal-motion .pass-reveal-card { animation:matmeg-pass-arrive 1350ms cubic-bezier(.2,.7,.2,1) both; }
.has-reveal-motion .pass-reveal-halo { animation:matmeg-pass-glow 1700ms ease-out both; }
.has-reveal-motion .pass-reveal-shine::before { animation:matmeg-pass-shine 1000ms 550ms ease-out both; }
.has-reveal-motion .pass-reveal-spark { animation:matmeg-pass-spark 1150ms 500ms ease-out both; }
.has-reveal-motion .spark-two,.has-reveal-motion .spark-three { animation-delay:650ms; }

/* Start invisible on the original timeline; never replace its completed frames. */
.pass-reveal-aura { position:absolute; z-index:-1; inset:0 -8px; border-radius:50%; background:radial-gradient(ellipse,#fff7fad9 0%,#fff3f880 45%,transparent 74%); opacity:0; pointer-events:none; }
.pass-reveal-shine::after { content:""; position:absolute; inset:-40% -130%; background:linear-gradient(110deg,transparent 42%,#fff3f840 46%,#ffffffbb 49%,#ffe3f699 51%,#fff3f826 55%,transparent 59%); transform:translateX(-55%); opacity:0; }
.has-reveal-motion .pass-reveal-aura { animation:matmeg-pass-idle-glow 9s 2.2s ease-in-out infinite both; }
.has-reveal-motion .pass-reveal-shine::after { animation:matmeg-pass-idle-shine 9s 4s ease-in-out infinite both; }
.is-reveal-hidden .pass-reveal-aura,.is-reveal-hidden .pass-reveal-shine::after { animation-play-state:paused; }

/* The saved pass has its own quiet light layers, without replaying the reveal.
   Keep the ticket still and animate only opacity/transform on decoration. */
.pass-living { position:relative; isolation:isolate; width:100%; max-width:350px; margin-inline:auto; border-radius:25px; }
.pass-living > .festival-ticket { width:100%; max-width:none; margin:0; }
.profile-pass-link .pass-living { max-width:245px; border-radius:20px; }
.profile-pass-link .pass-living > .festival-ticket.compact { max-width:none; }
.pass-screen > .pass-living { margin-top:22px; }
.pass-living::before { content:""; position:absolute; z-index:-1; inset:0; border-radius:inherit; box-shadow:0 0 17px 5px #fff3fade,0 0 31px 9px #ed73a76b; opacity:.55; pointer-events:none; animation:matmeg-pass-living-glow 8s ease-in-out infinite; }
.pass-living-shine { position:absolute; z-index:2; inset:0; border-radius:inherit; overflow:hidden; pointer-events:none; }
.pass-living-shine::before { content:""; position:absolute; top:-20%; bottom:-20%; left:-75%; width:70%; background:linear-gradient(110deg,transparent 22%,#fff5fb3d 38%,#ffffffc4 49%,#fff6fbb3 53%,#fff3f82e 65%,transparent 78%); transform:translateX(0); opacity:0; animation:matmeg-pass-living-shine 8s .3s ease-in-out infinite both; }
@keyframes matmeg-pass-living-glow {
  0%,100% { opacity:.55; transform:scale(1); }
  45% { opacity:.85; transform:scale(1.012); }
}
@keyframes matmeg-pass-living-shine {
  0% { opacity:0; transform:translateX(0); }
  5% { opacity:.65; }
  30% { opacity:.65; }
  40%,100% { opacity:0; transform:translateX(270%); }
}

@keyframes matmeg-pass-idle-glow {
  0%,8% { opacity:0; transform:scale(.98); }
  26% { opacity:.45; transform:scale(1.015); }
  48%,100% { opacity:0; transform:scale(1.035); }
}
@keyframes matmeg-pass-idle-shine {
  0% { opacity:0; transform:translateX(-55%); }
  3% { opacity:.32; }
  19% { opacity:.24; }
  26%,100% { opacity:0; transform:translateX(55%); }
}

@keyframes matmeg-pass-arrive {
  0% { opacity:0; transform:translateY(22px) scale(.86) rotateY(-20deg) rotateZ(-7deg); }
  28% { opacity:1; }
  65% { transform:translateY(-5px) scale(1.025) rotateY(5deg) rotateZ(2deg); }
  100% { opacity:1; transform:translateY(0) scale(1) rotateY(0) rotateZ(0); }
}
@keyframes matmeg-pass-glow {
  0% { opacity:0; transform:scale(.75); }
  55% { opacity:1; transform:scale(1.04); }
  100% { opacity:1; transform:scale(1); }
}
@keyframes matmeg-pass-shine {
  0% { opacity:0; transform:translateX(-55%); }
  12% { opacity:.85; }
  78% { opacity:.7; }
  100% { opacity:0; transform:translateX(55%); }
}
@keyframes matmeg-pass-spark {
  0% { opacity:0; transform:translateY(10px) scale(.25) rotate(var(--spark-turn)); }
  28% { opacity:.9; }
  68% { opacity:.65; }
  100% { opacity:0; transform:translateY(-12px) scale(1) rotate(0); }
}
@media(max-height:650px) {
  .pass-reveal-heading h1 { font-size:2rem; }
  .pass-reveal-stage { margin-block:12px 18px; }
  .pass-reveal-card { width:min(100%,232px); }
}
@media(max-width:359px) {
  .pass-reveal-heading h1 { font-size:1.5rem; line-height:1.06; }
}
@media(min-width:700px) and (max-height:600px) {
  .screen.pass-reveal { width:min(100%,720px); display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); column-gap:24px; align-items:center; }
  .pass-reveal-heading { grid-column:1; grid-row:1; align-self:end; }
  .pass-reveal-stage { grid-column:2; grid-row:1 / 3; margin:8px 0 12px; }
  .pass-reveal-actions { grid-column:1; grid-row:2; align-self:start; padding-top:20px; }
}
@media(prefers-reduced-motion:reduce) {
  .pass-reveal *, .pass-reveal *::before, .pass-reveal *::after { animation:none!important; transition:none!important; }
  .pass-reveal-spark,.pass-reveal-shine,.pass-reveal-aura { display:none; }
  .pass-reveal-card { transform:none; }
  .pass-living::before { animation:none; transform:none; opacity:.55; }
  .pass-living-shine { display:none; }
}
@media(forced-colors:active) {
  .pass-reveal-halo,.pass-reveal-shine,.pass-reveal-spark,.pass-reveal-aura { display:none; }
  .pass-reveal-card { filter:none; }
  .pass-living::before,.pass-living-shine { display:none; }
}
