.incr-intro {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  background: #000;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0s ease-out .55s, visibility 0s linear .55s;
  opacity: 1;
  visibility: visible;
}
html:not(.incr-intro-done) body > :not(.incr-intro) { visibility: hidden; }
.incr-intro.is-done {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* Particles */
.incr-intro__particles {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}
.incr-intro__particles span {
  position: absolute;
  display: block;
  border-radius: 50%;
  animation: incr-intro-float var(--d, 10s) var(--delay, 0s) infinite linear;
  opacity: 0;
}
.incr-intro__particles span:nth-child(1){left:5%;top:90%;--d:13s;--delay:-10s;width:3px;height:3px;--op:.45;--dx:24px;background:rgba(255,255,255,.45)}
.incr-intro__particles span:nth-child(2){left:10%;top:20%;--d:9s;--delay:-2s;width:2px;height:2px;--op:.35;--dx:-18px;background:rgba(255,255,255,.35)}
.incr-intro__particles span:nth-child(3){left:18%;top:75%;--d:14s;--delay:-8s;width:4px;height:4px;--op:.3;--dx:30px;background:rgba(255,196,37,.3)}
.incr-intro__particles span:nth-child(4){left:25%;top:40%;--d:10s;--delay:-5s;width:2px;height:2px;--op:.4;--dx:-22px;background:rgba(255,255,255,.4)}
.incr-intro__particles span:nth-child(5){left:32%;top:85%;--d:12s;--delay:-11s;width:3px;height:3px;--op:.35;--dx:16px;background:rgba(255,255,255,.35)}
.incr-intro__particles span:nth-child(6){left:38%;top:10%;--d:8s;--delay:-1s;width:2px;height:2px;--op:.5;--dx:-28px;background:rgba(255,255,255,.5)}
.incr-intro__particles span:nth-child(7){left:45%;top:65%;--d:15s;--delay:-13s;width:5px;height:5px;--op:.25;--dx:20px;background:rgba(0,80,47,.25)}
.incr-intro__particles span:nth-child(8){left:52%;top:30%;--d:9s;--delay:-4s;width:2px;height:2px;--op:.4;--dx:-14px;background:rgba(255,255,255,.4)}
.incr-intro__particles span:nth-child(9){left:58%;top:80%;--d:11s;--delay:-7s;width:3px;height:3px;--op:.35;--dx:26px;background:rgba(255,196,37,.35)}
.incr-intro__particles span:nth-child(10){left:63%;top:15%;--d:7s;--delay:-3s;width:2px;height:2px;--op:.45;--dx:-20px;background:rgba(255,255,255,.45)}
.incr-intro__particles span:nth-child(11){left:70%;top:55%;--d:13s;--delay:-9s;width:4px;height:4px;--op:.3;--dx:18px;background:rgba(255,255,255,.3)}
.incr-intro__particles span:nth-child(12){left:76%;top:35%;--d:10s;--delay:-6s;width:2px;height:2px;--op:.4;--dx:-24px;background:rgba(255,255,255,.4)}
.incr-intro__particles span:nth-child(13){left:82%;top:70%;--d:14s;--delay:-12s;width:3px;height:3px;--op:.3;--dx:22px;background:rgba(255,255,255,.3)}
.incr-intro__particles span:nth-child(14){left:88%;top:10%;--d:8s;--delay:-5s;width:2px;height:2px;--op:.45;--dx:-16px;background:rgba(255,255,255,.45)}
.incr-intro__particles span:nth-child(15){left:92%;top:50%;--d:11s;--delay:-2s;width:3px;height:3px;--op:.35;--dx:28px;background:rgba(255,255,255,.35)}
.incr-intro__particles span:nth-child(16){left:15%;top:55%;--d:9s;--delay:-8s;width:2px;height:2px;--op:.4;--dx:-12px;background:rgba(0,80,47,.4)}
.incr-intro__particles span:nth-child(17){left:35%;top:25%;--d:12s;--delay:-4s;width:3px;height:3px;--op:.3;--dx:14px;background:rgba(255,196,37,.3)}
.incr-intro__particles span:nth-child(18){left:55%;top:90%;--d:10s;--delay:-10s;width:2px;height:2px;--op:.4;--dx:-26px;background:rgba(255,255,255,.4)}
.incr-intro__particles span:nth-child(19){left:72%;top:20%;--d:8s;--delay:-7s;width:4px;height:4px;--op:.25;--dx:20px;background:rgba(255,255,255,.25)}
.incr-intro__particles span:nth-child(20){left:95%;top:80%;--d:13s;--delay:-11s;width:2px;height:2px;--op:.35;--dx:-18px;background:rgba(255,255,255,.35)}

@keyframes incr-intro-float {
  0%   { opacity:0; transform:translateY(0) translateX(0) rotate(0deg); }
  10%  { opacity:calc(var(--op, .4) * 1.8); }
  20%  { transform:translateY(-26vh) translateX(calc(var(--dx, 20px) * .5)) rotate(60deg); }
  40%  { transform:translateY(-52vh) translateX(calc(var(--dx, 20px) * -.4)) rotate(140deg); }
  60%  { transform:translateY(-78vh) translateX(calc(var(--dx, 20px) * .7)) rotate(220deg); }
  80%  { transform:translateY(-104vh) translateX(calc(var(--dx, 20px) * -.3)) rotate(300deg); }
  90%  { opacity:calc(var(--op, .4) * 1.8); }
  100% { opacity:0; transform:translateY(-130vh) translateX(var(--dx, 20px)) rotate(360deg); }
}

/* Glow behind logo */
.incr-intro__glow {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: clamp(300px, 50vw, 600px);
  height: clamp(300px, 50vw, 600px);
  background: radial-gradient(circle, rgba(0,80,47,.12) 0%, transparent 70%);
  pointer-events: none;
  opacity: 0;
  transition: opacity .8s ease-out;
}
.incr-intro.is-ready .incr-intro__glow {
  opacity: 1;
}

/* Inner */
.incr-intro__inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  transition: opacity .5s ease-in, transform .5s ease-in;
}
.incr-intro.is-done .incr-intro__inner {
  opacity: 0;
  transform: translateY(-12px) scale(.96);
}

/* Logo */
.incr-intro__logo {
  height: clamp(120px, 16vh, 200px);
  width: auto;
  display: block;
  opacity: 0;
  transform: scale(.88);
  filter: blur(.5px);
  transition: opacity .55s ease-out, transform .55s ease-out, filter .55s ease-out;
}
.incr-intro.is-ready .incr-intro__logo,
.incr-intro.is-done .incr-intro__logo {
  opacity: 1;
  transform: scale(1);
}

/* Tagline */
.incr-intro__tagline {
  font-family: var(--incr-font-body, system-ui, sans-serif);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .4);
  margin: 0;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .55s ease-out .1s, transform .55s ease-out .1s;
}
.incr-intro.is-ready .incr-intro__tagline,
.incr-intro.is-done .incr-intro__tagline {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .incr-intro,
  .incr-intro__inner,
  .incr-intro__logo,
  .incr-intro__tagline,
  .incr-intro__glow,
  .incr-intro__particles span {
    transition-duration: .01s;
    animation-duration: .01s;
  }
}
