/* 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 linear 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 linear 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{
  /* Load the planted poles, extend, then accelerate continuously down the piste. */
  0%{transform:translateX(-50%) translateY(0) scale(1);opacity:1;animation-timing-function:cubic-bezier(.3,0,.55,1)}
  10%{transform:translateX(-50%) translateY(3px) scale(1.01,.95);animation-timing-function:cubic-bezier(.15,.7,.5,1)}
  17%{transform:translateX(-50%) translateY(3px) scale(1.015);animation-timing-function:cubic-bezier(.48,.02,.85,.7)}
  88%{opacity:1;animation-timing-function:linear}
  100%{transform:translateX(-50%) translateY(360px) scale(4.6);opacity:0}
}
@keyframes push-frame{0%,11%{transform:translateX(0)}12%,100%{transform:translateX(-50%)}}
@keyframes snow-push{0%,11%{opacity:0;transform:translateX(-50%) scale(.3)}15%{opacity:.9;transform:translateX(-50%) scale(.65)}28%{opacity:.75;transform:translateX(-50%) translateY(8px) scale(1.35)}60%{opacity:.26;transform:translateX(-50%) translateY(30px) scale(2.5)}100%{opacity:0;transform:translateX(-50%) translateY(78px) scale(3.8)}}
@keyframes shadow-push{0%,17%{transform:translateX(-50%) translateY(0) scale(1);opacity:1;animation-timing-function:cubic-bezier(.48,.02,.85,.7)}88%{opacity:.65;animation-timing-function:linear}100%{transform:translateX(-50%) translateY(420px) scale(4.4);opacity:0}}
@keyframes speed-push{0%,35%{opacity:0}72%{opacity:.5}90%{opacity:.72}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}}
