:root{
  --opening-bg: #03000a;
  --opening-text: #f5f3ff;
  --opening-accent: #f05dff;
  --opening-accent-2: #7b45ff;
  --vh: 100vh;
}

*,
*::before,
*::after{
  box-sizing:border-box;
}

.opening{
  position:fixed;
  inset:0;
  width:100vw;
  height:calc(var(--vh, 100vh));
  overflow:hidden;
  background:var(--opening-bg);
  color:var(--opening-text);
  display:none;
  z-index:50;
}

.opening--hidden{
  display:none;
}

.opening--active{
  display:block;
}

.opening__visual{
  position:absolute;
  inset:0;
  overflow:hidden;
  background:#000;
}

.opening__img{
  position:absolute;
  inset:0;
  width:100vw;
  height:calc(var(--vh, 100vh));
  object-fit:cover;
  object-position:left center;
  opacity:0;
  transition:opacity .8s ease;
}

.opening__img.visible{
  opacity:1;
}

.opening__overlay{
  position:absolute;
  inset:0;
  pointer-events:none;
}

.opening__overlay--color{
  background:rgba(112,66,20,0.3);
}

.opening__overlay--mesh{
  background-image:
    repeating-linear-gradient(
      0deg,
      rgba(255,255,255,0.28) 0,
      rgba(255,255,255,0.28) 1px,
      transparent 1px,
      transparent 5px
    ),
    repeating-linear-gradient(
      90deg,
      rgba(255,255,255,0.18) 0,
      rgba(255,255,255,0.18) 1px,
      transparent 1px,
      transparent 5px
    );
  mix-blend-mode:screen;
  opacity:0.55;
}

.opening__vignette{
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at center,rgba(0,0,0,0) 45%,rgba(0,0,0,0.65));
  z-index:2;
}

.opening__flash{
  position:absolute;
  inset:0;
  background:#fff;
  opacity:0;
  pointer-events:none;
  z-index:4;
}

.opening__flash.visible{
  animation:openingFlash .55s ease-out forwards;
}

.fire-video{
  position:fixed;
  inset:0;
  width:100vw;
  height:calc(var(--vh, 100vh));
  background:#000;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:60;
  opacity:0;
  pointer-events:none;
  transition:opacity .3s ease;
}

.fire-video--visible{
  opacity:1;
  pointer-events:auto;
}

.fire-video__media{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:none;
  transition:filter .5s ease, opacity .5s ease;
}

.fire-video--fade .fire-video__media{
  filter:blur(18px);
  opacity:0;
}

.fire-video--hidden{
  opacity:0;
  pointer-events:none;
  display:none;
}

.opening__hud{
  position:relative;
  z-index:5;
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:24px clamp(16px,5vw,48px);
  text-transform:uppercase;
  letter-spacing:0.2em;
  font-size:0.85rem;
}

.opening__tagline{
  margin:0;
  color:rgba(255,255,255,0.7);
}

.skip-btn{
  border:1px solid rgba(255,255,255,0.5);
  background:rgba(0,0,0,0.35);
  color:var(--opening-text);
  padding:10px 24px;
  font-size:0.85rem;
  letter-spacing:0.3em;
  cursor:pointer;
  transition:background .2s ease, transform .2s ease;
  text-transform:uppercase;
}

.skip-btn:focus-visible{
  outline:3px solid rgba(240,93,255,0.55);
  outline-offset:2px;
}

.skip-btn:hover{
  background:rgba(240,93,255,0.25);
  transform:translateY(-1px);
}

.progress-track{
  position:absolute;
  left:0;
  bottom:0;
  width:100%;
  height:6px;
  background:rgba(255,255,255,0.15);
  overflow:hidden;
  z-index:3;
}

.progress-bar{
  width:0%;
  height:100%;
  background:linear-gradient(90deg,var(--opening-accent),var(--opening-accent-2));
  transform-origin:left center;
  transition:width 2s linear;
}

.opening__caption{
  position:absolute;
  bottom:48px;
  left:50%;
  transform:translateX(-50%);
  text-align:center;
  width:min(90vw,640px);
  z-index:5;
  font-size:clamp(1rem,2vw,1.25rem);
  letter-spacing:0.08em;
  text-shadow:0 8px 18px rgba(0,0,0,0.55);
}

.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  border:0;
}

.opening__noscript{
  margin:0;
  padding:12px 16px;
  background:#300028;
  color:#fff;
  text-align:center;
  font-size:0.9rem;
}
.opening__noscript a{
  color:#fff;
}

@media (max-width:1280px){
  .opening__visual{
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .opening__img{
    position:relative;
    inset:auto;
    width:100vw;
    height:auto;
    object-fit:contain;
    object-position:center;
  }
}

@media (max-width:1280px){
  .fire-video__media{
    width:100vw;
    height:auto;
    object-fit:contain;
  }
}

@media (max-width:600px){
  .opening__hud{
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
  }
  .skip-btn{
    width:100%;
    text-align:center;
  }
  .opening__caption{
    bottom:32px;
  }
}

@media (prefers-reduced-motion: reduce){
  .opening__img{
    transition:none;
  }
  .progress-bar{
    transition:none;
  }
  .opening__flash.visible{
    animation:none;
    opacity:0;
  }
  .fire-video__media{
    transition:none;
  }
}

@keyframes openingFlash{
  0%{ opacity:0; }
  10%{ opacity:1; }
  60%{ opacity:0.35; }
  100%{ opacity:0; }
}
