/* Originkit ASCII Rain 的静态站原生适配：先于学院开机页播放。 */
.ascii-intro {
  position: fixed;
  inset: 0;
  z-index: 11000;
  overflow: hidden;
  min-height: 100svh;
  background: #030405;
  cursor: pointer;
  touch-action: manipulation;
  opacity: 1;
  isolation: isolate;
}

.ascii-intro:focus { outline: none; }

.ascii-intro ~ .cassell-audio-toggle { visibility: hidden; }

.ascii-intro::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 48%, transparent 0 34%, rgba(0,0,0,.18) 68%, rgba(0,0,0,.55) 100%),
    linear-gradient(180deg, rgba(255,255,255,.018), transparent 18%, transparent 82%, rgba(0,0,0,.22));
}

#asciiRainCanvas {
  display: block;
  width: 100%;
  height: 100%;
  filter: saturate(.78) contrast(1.08);
}

.ascii-intro-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

.ascii-intro.is-leaving {
  pointer-events: none;
  animation: asciiRainExit .62s cubic-bezier(.55,0,1,.45) forwards;
}

body.ascii-intro-active #boot {
  visibility: hidden;
}

body.ascii-intro-active #boot *,
body.ascii-intro-active #boot *::before,
body.ascii-intro-active #boot *::after {
  animation-play-state: paused !important;
}

@keyframes asciiRainExit {
  to { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .ascii-intro.is-leaving { animation-duration: .001ms; }
}
