/* One continuous 6.6 second reveal; only transform and opacity animate. */
.screen[data-screen="evaluating"] { overflow: hidden; }
.evaluation-card {
  position: relative;
  width: min(100%, 820px);
  padding: clamp(22px, 4vh, 50px);
  border: 0;
  background: radial-gradient(ellipse at 50% 35%, #39314f88, transparent 68%);
  box-shadow: none;
  backdrop-filter: none;
}
.pokeball-scene {
  width: min(70vw, 480px);
  height: min(43dvh, 480px);
  margin: 0 auto 24px;
  perspective: 900px;
}
.pokeball-scene::before {
  inset: 3% -10%; border: 0; box-shadow: none;
  background: radial-gradient(ellipse, color-mix(in srgb, var(--reveal-color) 20%, transparent), transparent 65%);
}
.reveal-floor {
  position: absolute; left: 19%; right: 19%; bottom: 2%; height: 12%;
  border-radius: 50%; background: #08061399; filter: blur(12px);
}
.reveal-halo {
  position: absolute; inset: 10%; border-radius: 50%; opacity: 0;
  background: radial-gradient(circle, color-mix(in srgb, var(--reveal-color) 42%, transparent), transparent 68%);
  transition: opacity 1s ease;
}
[data-phase="opening"] .reveal-halo,
[data-phase="revealed"] .reveal-halo { opacity: 1; }
.pokeball-flight {
  width: clamp(140px, 27vw, 220px); height: clamp(140px, 27vw, 220px);
  margin: 0; top: 50%; left: 50%;
  transform: translate(-50%, -50%); transform-style: preserve-3d;
}
.pokeball { filter: drop-shadow(0 28px 18px #06041188); }
.pokeball__half { border-width: 5px; height: 50%; box-sizing: border-box; }
.pokeball__half--top {
  border-radius: 160px 160px 0 0; border-bottom-width: 4px;
  background:
    radial-gradient(ellipse at 30% 30%, #fff9 0%, #fff2 12%, transparent 30%),
    radial-gradient(ellipse at 40% 15%, #fa4163 5%, #d01543 48%, #640e2d 90%);
  box-shadow: inset -12px 0 20px #28081966, inset 2px 3px 3px #ffadc466;
  transform-origin: 50% 100%;
}
.pokeball__half--bottom {
  border-radius: 0 0 160px 160px; border-top-width: 4px;
  background: radial-gradient(ellipse at 36% 0%, white, #d5d4df 45%, #777386 90%);
  box-shadow: inset -12px -8px 20px #22193566;
}
.pokeball__band { height: 12px; margin-top: -6px; background: #17121f; }
.pokeball__button {
  width: 29%; height: 29%; border: 8px solid #17121f;
  background: radial-gradient(circle at 35% 25%, white, #e4e5f0 48%, #9491a4);
  box-shadow: inset 0 0 0 3px #b6b4c3, 0 3px 8px #0b081a99;
}
.screen--entered .pokeball-flight { animation: ball-cinematic-flight 6.6s both !important; }
.screen--entered .pokeball__half--top { animation: ball-lid 6.6s both !important; }
.screen--entered .pokeball__half--bottom { animation: ball-base 6.6s both !important; }
.screen--entered .pokeball__button { animation: ball-button 6.6s both !important; }
.screen--entered .pokeball__band { animation: ball-seam 6.6s both !important; }
.screen--entered .pokeball-burst {
  animation: release-light 6.6s both !important;
  background: #fff3ed; box-shadow: 0 0 40px #ffdfe9, 0 0 100px var(--reveal-color);
}
.evaluation-pokemon {
  z-index: 5;
  width: 100%; height: 100%; top: 0; left: 0;
  filter: drop-shadow(0 22px 18px #08041788);
}
.screen--entered .evaluation-pokemon { animation: companion-emerge 6.6s both !important; }
.pokeball-speed-line { display: none; }
.evaluation-card h2 { font-size: clamp(1.65rem, 4vw, 3rem); line-height: 1.12; }
.evaluation-card .eyebrow { font-size: .7rem; letter-spacing: .23em; }
.evaluation-card > .reveal-name {
  font-size: clamp(2.5rem, 6vw, 4.3rem); font-weight: 900; line-height: 1;
  letter-spacing: -.04em; color: white; margin: 0; max-height: 0;
  opacity: 0; transform: translateY(12px); transition: opacity .5s, transform .5s;
}
[data-phase="revealed"] .reveal-name { max-height: 100px; opacity: 1; transform: none; margin: 12px 0 20px; }
[data-phase="revealed"] [data-copy="evaluatingLead"] { display: none; }
.evaluation-steps { max-width: 500px; margin: 20px auto 0; }
.evaluation-steps span { padding: 12px 6px; border: 1px solid #ffffff12; }
@keyframes ball-cinematic-flight {
  0% { transform: translate(120%, 80%) translateZ(-650px) rotate(-120deg); opacity: 0; }
  8% { opacity: 1; }
  28% { transform: translate(-50%, -58%) translateZ(45px) rotate(8deg); }
  38% { transform: translate(-50%, -50%) translateZ(0) rotate(0); }
  45% { transform: translate(-50%, -50%) rotate(-9deg); }
  51% { transform: translate(-50%, -50%) rotate(7deg); }
  58%, 66% { transform: translate(-50%, -50%) rotate(0); opacity: 1; }
  82%, 100% { transform: translate(-50%, -20%) scale(.65); opacity: 0; }
}
@keyframes ball-lid {
  0%, 59% { transform: none; }
  75%, 100% { transform: translateY(-65%) rotateX(65deg) rotate(-12deg); }
}
@keyframes ball-base {
  0%, 59% { transform: none; }
  78%, 100% { transform: translateY(55%) rotate(8deg); }
}
@keyframes ball-seam { 0%, 59% { opacity: 1; } 68%, 100% { opacity: 0; } }
@keyframes ball-button {
  0%, 59% { transform: translate(-50%, -50%); opacity: 1; }
  69%, 100% { transform: translate(-50%, -110%) scale(.8); opacity: 0; }
}
@keyframes release-light {
  0%, 58% { transform: translate(-50%, -50%) scale(.1); opacity: 0; }
  67% { transform: translate(-50%, -50%) scale(2); opacity: .75; }
  84%, 100% { transform: translate(-50%, -50%) scale(5); opacity: 0; }
}
@keyframes companion-emerge {
  0%, 63% { transform: translateY(30px) scale(.05); opacity: 0; }
  74% { transform: translateY(-14px) scale(1.05); opacity: 1; }
  84%, 100% { transform: translateY(0) scale(1); opacity: 1; }
}
@media (max-height: 760px) {
  .pokeball-scene { height: 33dvh; margin-bottom: 16px; }
  .evaluation-card { padding: 18px; }
  .evaluation-card > p:not(.eyebrow) { font-size: .9rem; }
  .evaluation-card > .reveal-name { font-size: 2.4rem; }
}
/* The museum explicitly uses the full reveal; ?motion=calm remains available. */
@media (prefers-reduced-motion: reduce) {
  .screen--entered:not(.preview-full-motion) .pokeball-flight { animation-name: ball-calm !important; }
  .screen--entered:not(.preview-full-motion) .evaluation-pokemon { animation-name: companion-calm !important; }
  .screen--entered:not(.preview-full-motion) .pokeball-burst { animation: none !important; }
  .screen--entered:not(.preview-full-motion) .pokeball__half,
  .screen--entered:not(.preview-full-motion) .pokeball__button,
  .screen--entered:not(.preview-full-motion) .pokeball__band { animation-name: ball-seam !important; }
  .pokeball__button { transform: translate(-50%, -50%); }
}
@keyframes ball-calm {
  0%, 59% { transform: translate(-50%, -50%); opacity: 1; }
  74%, 100% { transform: translate(-50%, -50%); opacity: 0; }
}
@keyframes companion-calm {
  0%, 65% { transform: none; opacity: 0; }
  82%, 100% { transform: none; opacity: 1; }
}
