/*
  Nessoris entry intro (logo animation). SHARED: loaded by www.nessoris.com and by the meeting-poll app at
  vote.nessoris.com straight from this address, so a change here changes both. Keep it self-contained:
  no site tokens without a fallback, image paths relative to this file. Markup is built by intro.js.
*/
html.intro-wait { background: #0B0F17; }
html.intro-wait body { visibility: hidden; } /* nothing flashes before the overlay exists */
#intro, #intro * { box-sizing: border-box; }
#intro { font-family: Poppins, system-ui, sans-serif; }
/* ---------- Entry intro: a streak of light draws the N, the name assembles, the curtain lifts. Once per session. ---------- */
#intro { display: none; }
.intro-on #intro { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; align-content: center; gap: 26px; overflow: hidden;
  background: radial-gradient(60% 50% at 50% 50%, rgba(30,107,240,.28), transparent 70%), var(--ink, #0B0F17);
  clip-path: inset(0 0 0 0); animation: introCurtain .8s cubic-bezier(.76,0,.24,1) 3.35s forwards; } /* logo holds about a second before the curtain lifts */
.intro-on #intro::before { content: ''; position: absolute; inset: -5%; background: url('../images/silk-black.webp') center/cover; opacity: .55; animation: introZoom 4.2s ease-out forwards; }
.intro-on body { overflow: hidden; }
#intro .streak { position: absolute; left: 0; top: 50%; width: 38vw; height: 2px; margin-top: -1px; border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--sky, #3AA0FF) 40%, #fff 70%, transparent); box-shadow: 0 0 18px 4px rgba(58,160,255,.55);
  transform: translateX(-45vw); opacity: 0; animation: introStreak 1.05s cubic-bezier(.55,0,.25,1) .1s forwards; }
#intro .lg { position: relative; width: clamp(260px, 44vw, 540px); aspect-ratio: 1000 / 198; transform: translateX(31%) scale(1.18); animation: introSlide 1s cubic-bezier(.65,0,.25,1) 1.05s forwards; }
#intro .mk { position: absolute; left: 0; top: 0; width: 38.13%; height: auto;
  -webkit-mask-image: linear-gradient(100deg, #000 45%, transparent 55%); mask-image: linear-gradient(100deg, #000 45%, transparent 55%);
  -webkit-mask-size: 300% 100%; mask-size: 300% 100%; -webkit-mask-position: 100% 0; mask-position: 100% 0;
  animation: introDraw 1s cubic-bezier(.55,0,.25,1) .2s forwards; }
#intro .sheen { position: absolute; left: 0; top: 0; width: 38.13%; aspect-ratio: 440 / 228; mix-blend-mode: multiply;
  background: linear-gradient(100deg, transparent 35%, rgba(58,160,255,.95) 50%, transparent 65%) 150% 0 / 300% 100% no-repeat;
  -webkit-mask: url('../brand/nessoris-mark-on-dark.png') 0 0 / 100% 100% no-repeat; mask: url('../brand/nessoris-mark-on-dark.png') 0 0 / 100% 100% no-repeat;
  animation: introSheen .9s ease-in-out .95s forwards; }
#intro .lg i { position: absolute; inset: 0; background: url('../brand/nessoris-logo-on-dark-lg.png') 0 0 / 100% 100% no-repeat;
  clip-path: inset(0 calc(100% - var(--b)) 0 var(--a)); opacity: 0; transform: translateY(38%); filter: blur(6px);
  animation: introLetter .7s cubic-bezier(.2,.8,.2,1) calc(1.15s + var(--n) * 60ms) forwards; }
#intro .intro-tag { position: relative; margin: 0; color: #c3cce0; font-weight: 300; font-size: clamp(.95rem, 1.6vw, 1.15rem); letter-spacing: .04em; opacity: 0; transform: translateY(10px);
  animation: introTag .7s var(--ease, cubic-bezier(0.22, 1, 0.36, 1)) 1.75s forwards; }
@keyframes introStreak { 0% { opacity: 0; } 15% { opacity: 1; } 85% { opacity: 1; } 100% { opacity: 0; transform: translateX(110vw); } }
@keyframes introDraw { to { -webkit-mask-position: 0 0; mask-position: 0 0; } }
@keyframes introSheen { to { background-position: -50% 0; } }
@keyframes introSlide { to { transform: none; } }
@keyframes introLetter { to { opacity: 1; transform: none; filter: blur(0); } }
@keyframes introTag { to { opacity: 1; transform: none; } }
@keyframes introZoom { from { transform: scale(1.12); } to { transform: scale(1); } }
@keyframes introCurtain { to { clip-path: inset(0 0 100% 0); visibility: hidden; } }
.intro-skip #intro { animation: introCurtain .45s cubic-bezier(.76,0,.24,1) 0s forwards !important; }
.intro-skip #intro * { animation-duration: .01s !important; animation-delay: 0s !important; }
