/* Only the opt-in console's waiting screen. All imagery comes from its photo. */
.game420-start-scene {display:none;position:absolute;inset:0;width:100%;height:100%;overflow:hidden;pointer-events:none;user-select:none;z-index:0;background:#030510;}
#g420-ship-light {mask-type:alpha;}
.game420-start-scene .start-reveal {position:absolute;inset:0;}
.game420-start-scene .start-reveal > svg {display:block;width:100%;height:100%;overflow:hidden;}
html[data-game420-start] body:is([data-stage=boot],[data-stage=start]) #start-panel:not([hidden]) .game420-start-scene {display:block;}
html[data-game420-start] body:is([data-stage=boot],[data-stage=start]) .game420-height-screen-art {visibility:hidden;}
html[data-game420-start] body[data-stage=start] #press-start {
  left:var(--start-x)!important;top:var(--start-y)!important;
  width:var(--start-w)!important;height:var(--start-h)!important;z-index:2;
}
/* Original GAME420 16-step scan. The existing boot supplies these variables.
   Only a decorative replay is needed if that boot completed under the film. */
.game420-start-scene[data-booting=true] .start-reveal {clip-path:inset(calc(100% - var(--intro-progress,0%)) 0 0);}
.game420-start-scene[data-booting=true] .start-logo-shimmer {animation:none;filter:brightness(var(--intro-light,.55)) saturate(1.13);}
.game420-start-scene .start-reveal::after {content:'';position:absolute;left:7%;right:7%;height:2px;pointer-events:none;background:#d4ffb5;box-shadow:0 0 8px 3px #a0ff7770;display:none;}
.game420-start-scene[data-booting=true] .start-reveal::after {display:block;top:calc(100% - var(--intro-progress,0%));}
.game420-start-scene[data-arrival=true] .start-reveal {animation:game420-start-scan var(--arrival-duration) steps(16,end) 80ms both;}
.game420-start-scene[data-arrival=true] .start-logo-shimmer {animation:game420-start-light var(--arrival-duration) steps(16,end) 80ms both;}
.game420-start-scene[data-arrival=true] .start-reveal::after {display:block;animation:game420-start-scan-line var(--arrival-duration) steps(16,end) 80ms both;}
@keyframes game420-start-scan {from{clip-path:inset(100% 0 0)}to{clip-path:inset(0)}}
@keyframes game420-start-light {from{filter:brightness(.55) saturate(1.13)}to{filter:brightness(1.3) saturate(1.13)}}
@keyframes game420-start-scan-line {from{top:100%}to{top:0}}
/* Reuse GAME420's actual idle keyframes, not the superseded early CSS effects.
   Scanlines remain fixed; the separate low-opacity noise tile may drift. */
.game420-start-scene::after {content:'';position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(0deg,#0000 0 2px,#0005 2px 3px),repeating-linear-gradient(90deg,#ff324b08 0 1px,#76ff9105 1px 2px,#30abff08 2px 3px);
  opacity:.58;animation:intro-crt-breathe 6s linear infinite;}
.game420-start-scene .start-grain {position:absolute;inset:0;pointer-events:none;opacity:.02;background-size:96px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.8' d='M0 0h96v96H0z'/%3E%3C/svg%3E");animation:intro-grain 1.6s steps(2,end) infinite;}
.game420-start-scene .start-logo-shimmer {animation:intro-logo-shimmer 4.2s linear infinite;}
.game420-start-scene .start-logo-aura {animation:intro-logo-aura 3.2s ease-in-out infinite;}
.game420-start-scene .start-ufo {animation:game420-ufo-float 6.7s ease-in-out infinite;}
.game420-start-scene .start-star {animation:game420-star-light 4.7s ease-in-out infinite;animation-delay:var(--star-delay,0s);}
.game420-start-scene .start-bounce {animation:game420-press-bounce 3s ease-in-out infinite;}
.game420-start-scene .start-press-light {animation:game420-press-light 2.4s ease-in-out infinite;}
.game420-start-scene .start-violet-glow {animation:game420-space-light 8s ease-in-out infinite;}
.game420-start-scene .start-lime-glow {animation:game420-space-light 10.3s -3.1s ease-in-out infinite;}
.game420-start-scene .start-meteor {opacity:0;animation:game420-meteor 9.7s 1.9s linear infinite;}
.game420-start-scene [class*=start-],.game420-start-scene::after,.game420-start-scene .start-reveal::after {animation-play-state:paused;}
.game420-start-scene[data-running=true] [class*=start-],.game420-start-scene[data-running=true]::after,.game420-start-scene[data-visible=true] .start-reveal::after {animation-play-state:running;}
@keyframes game420-ufo-float {
  0%,100%{transform:translate(0,0);filter:brightness(1)}
  28%{transform:translate(calc(3 * var(--motion-unit)),calc(-5 * var(--motion-unit)));filter:brightness(1.28)}
  62%{transform:translate(calc(-2 * var(--motion-unit)),calc(2 * var(--motion-unit)));filter:brightness(1.08)}
  82%{transform:translate(calc(-3 * var(--motion-unit)),calc(-2 * var(--motion-unit)));filter:brightness(1.2)}
}
@keyframes game420-press-bounce {
  0%,12%,34%,100%{transform:translateY(0);filter:drop-shadow(0 0 1px #9cff7040)}
  18%{transform:translateY(calc(-4 * var(--motion-unit)));filter:drop-shadow(0 0 5px #9cff7090)}
  24%{transform:translateY(calc(1 * var(--motion-unit)));filter:drop-shadow(0 0 3px #9cff7060)}
  29%{transform:translateY(calc(-1 * var(--motion-unit)));filter:drop-shadow(0 0 2px #9cff7050)}
}
@keyframes game420-star-light {0%,100%{opacity:.25}50%{opacity:1}}
/* GAME420 title halo's 2.4s rhythm and 12→23 radius, adapted to the SVG rim. */
@keyframes game420-press-light {0%,100%{opacity:.22;filter:drop-shadow(0 0 12px #8aff462b)}50%{opacity:.68;filter:drop-shadow(0 0 23px #8aff4666)}}
@keyframes game420-space-light {0%,100%{opacity:.25}50%{opacity:.8}}
@keyframes game420-meteor {
  0%{opacity:0;transform:translate(0,0)}
  2%{opacity:.75}
  8%{opacity:.45}
  10%,100%{opacity:0;transform:translate(calc(95 * var(--motion-unit)),calc(29 * var(--motion-unit)))}
}
@media(prefers-reduced-motion:reduce) {
  .game420-start-scene [class*=start-],.game420-start-scene::after,.game420-start-scene .start-reveal::after {animation:none!important;transform:none!important;}
  .game420-start-scene .start-reveal {clip-path:none!important;}
  .game420-start-scene .start-reveal::after,.game420-start-scene .start-meteor {display:none!important;}
  .game420-start-scene :is(.start-violet-glow,.start-lime-glow) {opacity:.3;}
  .game420-start-scene .start-logo-shimmer {filter:brightness(1.18) saturate(1.08);}
  .game420-start-scene .start-star {opacity:.55;}
  .game420-start-scene .start-press-light {opacity:.08;}
}
