/* The skier waits inside the hut, then drives straight toward the camera. */
.scene{height:390px;background:#d9e6e9;isolation:isolate}
.start-landscape{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 48%;pointer-events:none;z-index:-1}
.scene-top,.scene-bottom{z-index:5}
.round-label{background:#ffffffc9;padding:7px 10px;border-radius:20px;backdrop-filter:blur(6px)}
.scene-bottom{color:#466759;text-shadow:0 1px 2px white}
.signal-display{left:auto;right:calc(50% - 220px);top:129px;transform:none;z-index:6;width:75px}
.signal{display:flex;flex-direction:column;width:47px;margin:auto;gap:10px;padding:10px 9px;border-radius:20px;box-shadow:0 6px 15px #102e3540}
.lamp{width:23px;height:23px;flex-shrink:0}
.signal-caption{font-size:8px;letter-spacing:1.1px;background:#f5fbf1eb;padding:5px 4px;border-radius:5px;line-height:1.35;text-shadow:none;margin-top:7px;box-shadow:0 2px 6px #233e2520}
.skier-wrap{--frame-aspect:.75;position:absolute;z-index:3;height:192px;width:calc(192px * var(--frame-aspect));left:50%;top:auto;bottom:92px;transform:translateX(-50%);transform-origin:50% 88%;will-change:transform}
.skier-crop{width:100%;height:100%;overflow:hidden;filter:drop-shadow(0 3px 2px #16332626)}
.skier-sheet{display:block;width:200%;max-width:none;height:100%;object-fit:fill;pointer-events:none;user-select:none;transform:translateX(0);will-change:transform}
.ski-shadow{position:absolute;z-index:1;left:50%;bottom:108px;width:90px;height:12px;transform:translateX(-50%);border-radius:50%;background:#223c4940;filter:blur(7px)}
.snow-burst{position:absolute;z-index:4;left:50%;bottom:96px;width:155px;height:76px;transform:translateX(-50%);opacity:0;pointer-events:none;background:radial-gradient(ellipse at 20% 70%,#fff 0, #ffffffa1 18%,transparent 54%),radial-gradient(ellipse at 80% 64%,white 0,#ffffffad 18%,transparent 58%);filter:blur(3px)}
.speed-streaks{position:absolute;inset:0;z-index:4;pointer-events:none;opacity:0;background:linear-gradient(61deg,transparent 19%,#ffffffba 19.3%,transparent 19.7%),linear-gradient(75deg,transparent 10%,#ffffffaa 10.2%,transparent 10.6%),linear-gradient(-61deg,transparent 17%,#ffffffbd 17.3%,transparent 17.7%),linear-gradient(-75deg,transparent 8%,#ffffffba 8.2%,transparent 8.6%);mask-image:linear-gradient(transparent 30%,black)}
.game[data-state=launching] .skier-wrap{animation:front-push 1.35s cubic-bezier(.55,.02,.8,.7) forwards}
.game[data-state=launching] .skier-sheet{animation:push-frame 1.35s steps(1,end) forwards}
.game[data-state=launching] .snow-burst{animation:snow-push 1.35s ease-out forwards}
.game[data-state=launching] .ski-shadow{animation:shadow-push 1.35s cubic-bezier(.55,.02,.8,.7) forwards}
.game[data-state=launching] .speed-streaks{animation:speed-push 1.35s ease-in forwards}
.game[data-state=launching] .green-lamp{background:#82f595;box-shadow:0 0 23px #6cff888f,inset 0 1px 3px #ffffff90}
.game[data-state=launching] .action{background:#167349;box-shadow:0 4px 0 #105b39;cursor:default}
.game[data-state=launching] #action-arrow{display:none}
.game[data-state=result] .skier-wrap,.game[data-state=result] .ski-shadow{animation:none;opacity:0}
.game[data-state=result] .result-overlay{animation:reveal .2s both}
@keyframes front-push{
  0%{transform:translateX(-50%) translateY(0) scale(1);opacity:1}
  15%{transform:translateX(-50%) translateY(4px) scale(.99, .96);opacity:1}
  32%{transform:translateX(-50%) translateY(13px) scale(1.17);opacity:1}
  66%{transform:translateX(-50%) translateY(83px) scale(2.05);opacity:1}
  87%{transform:translateX(-50%) translateY(245px) scale(3.5);opacity:1}
  100%{transform:translateX(-50%) translateY(490px) scale(4.7);opacity:0}
}
@keyframes push-frame{0%,14%{transform:translateX(0)}15%,100%{transform:translateX(-50%)}}
@keyframes snow-push{0%,13%{opacity:0;transform:translateX(-50%) scale(.4)}30%{opacity:.9;transform:translateX(-50%) translateY(7px) scale(1.1)}70%{opacity:.55;transform:translateX(-50%) translateY(45px) scale(2.4)}100%{opacity:0;transform:translateX(-50%) translateY(100px) scale(3.4)}}
@keyframes shadow-push{0%,15%{transform:translateX(-50%) scale(1);opacity:1}65%{transform:translateX(-50%) translateY(65px) scale(2);opacity:.7}100%{transform:translateX(-50%) translateY(210px) scale(4);opacity:0}}
@keyframes speed-push{0%,35%{opacity:0}65%{opacity:.7}100%{opacity:0}}
@media(min-width:1300px){.scene{height:410px}.skier-wrap{height:202px;width:calc(202px * var(--frame-aspect));bottom:98px}}
@media(max-width:640px){
  .scene{height:330px}
  .start-landscape{object-position:center 48%}
  .signal-display{right:8px;top:110px;width:67px}
  .signal{width:40px;padding:9px 8px;border-width:2px;gap:9px}
  .lamp{width:20px;height:20px}
  .signal-caption{font-size:7px;letter-spacing:.7px;padding:4px 2px}
  .skier-wrap{height:160px;width:calc(160px * var(--frame-aspect));left:50%;bottom:78px}
  .ski-shadow{bottom:92px;width:75px;height:10px}
  .snow-burst{bottom:82px;width:130px}
  .scene-bottom{font-size:6px;letter-spacing:.8px}
  .round-label{padding:6px 8px;font-size:6px;letter-spacing:.8px}
}
@media(max-width:365px){.scene{height:306px}.skier-wrap{height:148px;width:calc(148px * var(--frame-aspect));bottom:72px}.signal-display{right:4px;top:97px}.ski-shadow{bottom:86px}.snow-burst{bottom:76px}}
@media(prefers-reduced-motion:reduce){.game[data-state=launching] .skier-wrap{opacity:0}.game[data-state=launching] .ski-shadow{opacity:0}.snow-burst,.speed-streaks{display:none}}
