#nd-intro, #nd-flylogo{ display:none; }

html.nd-intro,
html.nd-intro body{ overflow:hidden; overscroll-behavior:none; }
html.nd-intro header .logo{ visibility:hidden; }

html.nd-intro #nd-intro{
  display:block; position:fixed; inset:0; z-index:10000;
  touch-action:none;
}
.nd-intro-bg{ position:absolute; inset:0; background:#000; }
.nd-intro-glow{
  position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(ellipse 58% 42% at 50% 48%, rgba(86,116,255,0.085), rgba(86,116,255,0.035) 45%, rgba(86,116,255,0) 100%),
    radial-gradient(ellipse 90% 45% at 50% 108%, rgba(124,92,255,0.07), rgba(124,92,255,0) 70%),
    linear-gradient(180deg, rgba(255,255,255,0.025), rgba(255,255,255,0) 38%);
  opacity:0; transition: opacity 1.6s ease;
}
.nd-intro-glow::after{
  content:''; position:absolute; inset:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:180px 180px; opacity:.035;
}
#nd-intro.is-in .nd-intro-glow{ opacity:1; }
#nd-intro::after{
  content:''; position:absolute; inset:0; pointer-events:none;
  background: radial-gradient(ellipse 120% 100% at 50% 50%, rgba(0,0,0,0) 35%, rgba(0,0,0,0.18) 60%, rgba(0,0,0,0.38) 80%, rgba(0,0,0,0.5) 100%);
}

.nd-intro-hint{
  position:absolute; left:50%; bottom:calc(30px + env(safe-area-inset-bottom, 0px));
  transform:translateX(-50%);
  background:none; border:0; padding:8px 14px; cursor:pointer;
  color:rgba(255,255,255,0.55); font-family:'Figtree', system-ui, sans-serif;
  font-size:12px; font-weight:500; letter-spacing:.03em;
  transition: color .2s ease;
  -webkit-tap-highlight-color:transparent;
}
.nd-intro-hint-in{
  display:flex; flex-direction:column; align-items:center; gap:11px;
  opacity:0; transform:translateY(10px);
  transition: opacity .7s ease, transform .9s cubic-bezier(.2,.7,.2,1);
}
#nd-intro.is-in .nd-intro-hint-in{ opacity:1; transform:none; transition-delay:2s; }
.nd-intro-hint:hover, .nd-intro-hint:focus-visible{ color:#fff; outline:none; }
@media (hover: hover){
  .nd-intro-hint:focus-visible .nd-intro-cue{ filter:drop-shadow(0 0 6px rgba(255,255,255,0.35)); }
}
.nd-intro-cue{ display:block; line-height:0; }
.nd-intro-cue--touch, .nd-intro-hint-txt--touch{ display:none; }

.nd-intro-wheel{ animation: ndWheel 1.9s cubic-bezier(.65,0,.35,1) infinite; transform-box:fill-box; }
@keyframes ndWheel{
  0%   { transform:translateY(0);    opacity:0; }
  15%  { transform:translateY(0);    opacity:1; }
  65%  { transform:translateY(9px);  opacity:0; }
  100% { transform:translateY(9px);  opacity:0; }
}

@media (hover: none) and (pointer: coarse){
  .nd-intro-cue--mouse, .nd-intro-hint-txt--mouse{ display:none; }
  .nd-intro-cue--touch, .nd-intro-hint-txt--touch{ display:block; }
  .nd-intro-hint{ color:rgba(255,255,255,0.42); font-size:11.5px; letter-spacing:.04em; }
  .nd-intro-hint-in{ gap:4px; }
}
.nd-intro-cue--touch{ position:relative; width:48px; height:76px; color:rgba(255,255,255,0.86); }
.nd-intro-trail{
  position:absolute; left:50%; top:0; width:1.5px; height:16px; margin-left:-.75px; border-radius:2px;
  background:linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,0.55));
  transform-origin:50% 100%; transform:scaleY(0); opacity:0;
  animation: ndTrail 2.6s infinite;
}
.nd-intro-handwrap{
  position:absolute; left:13px; bottom:0; width:28px; height:33px;
  animation: ndHandMove 2.6s infinite;
}
.nd-intro-hand{
  display:block; overflow:visible; transform-origin:40% 8%;
  animation: ndHandPress 2.6s infinite;
}
.nd-intro-ripple{
  position:absolute; left:4px; top:-4.5px; width:14px; height:14px; border-radius:50%;
  border:1.2px solid rgba(255,255,255,0.6); opacity:0; transform:scale(.3);
  animation: ndRipple 2.6s infinite;
}
@keyframes ndHandMove{
  0%   { transform:translateY(8px);   opacity:0; animation-timing-function:cubic-bezier(.2,.7,.3,1); }
  14%  { transform:translateY(0);     opacity:1; }
  24%  { transform:translateY(0);     opacity:1; animation-timing-function:cubic-bezier(.5,0,.2,1); }
  64%  { transform:translateY(-27px); opacity:1; animation-timing-function:ease-out; }
  78%  { transform:translateY(-31px); opacity:0; }
  100% { transform:translateY(8px);   opacity:0; }
}
@keyframes ndHandPress{
  0%, 17% { transform:scale(1); animation-timing-function:ease-out; }
  24%     { transform:scale(.93); }
  62%     { transform:scale(.93); animation-timing-function:ease-out; }
  72%     { transform:scale(1); }
  100%    { transform:scale(1); }
}
@keyframes ndRipple{
  0%, 19% { transform:scale(.3); opacity:0; animation-timing-function:ease-out; }
  24%     { transform:scale(.7); opacity:.9; animation-timing-function:ease-out; }
  44%     { transform:scale(1.6); opacity:0; }
  100%    { transform:scale(1.6); opacity:0; }
}
@keyframes ndTrail{
  0%, 24% { transform:scaleY(0); opacity:0; animation-timing-function:cubic-bezier(.5,0,.2,1); }
  64%     { transform:scaleY(1); opacity:1; animation-timing-function:ease-out; }
  84%     { transform:scaleY(1); opacity:0; }
  100%    { transform:scaleY(0); opacity:0; }
}

html.nd-intro #nd-flylogo{
  display:block; position:fixed; left:0; top:0; width:0; height:0;
  z-index:10001; pointer-events:none;
}
.nd-intro-mark{
  position:absolute; left:0; top:0;
  display:flex; align-items:center; white-space:nowrap;
  font-family:'Sora', system-ui, sans-serif; font-weight:700; color:#fff;
  transform-origin:0 0;
  opacity:0;
}
#nd-flylogo.is-ready .nd-intro-mark{ opacity:1; }
.nd-intro-mark svg{ display:block; flex-shrink:0; overflow:visible; }

.nd-intro-stroke{
  stroke-dasharray:1 1; stroke-dashoffset:1;
  transition: stroke-dashoffset 1.25s cubic-bezier(.55,.05,.25,1);
}
.nd-intro-dot{
  transform-box:fill-box; transform-origin:50% 50%; transform:scale(0);
  transition: transform .55s cubic-bezier(.3,1.6,.45,1) 1.05s;
}
#nd-flylogo.is-in .nd-intro-stroke{ stroke-dashoffset:0; }
#nd-flylogo.is-in .nd-intro-dot{ transform:scale(1); }

.nd-intro-word{ display:inline-flex; }
.nd-intro-word > span{
  display:inline-block; opacity:0; transform:translateY(.35em); filter:blur(4px);
  transition: opacity .5s ease, transform .6s cubic-bezier(.2,.7,.2,1), filter .5s ease;
}
#nd-flylogo.is-in .nd-intro-word > span{ opacity:1; transform:none; filter:none; }

.nd-intro-mark{ --g:1; }
.nd-intro-halo{
  position:absolute; left:50%; top:50%; width:150%; aspect-ratio:2.6 / 1;
  transform:translate(-50%,-50%); z-index:-1; pointer-events:none;
  opacity:var(--g);
}
.nd-intro-halo > span{
  position:absolute; inset:0; border-radius:50%;
  background: radial-gradient(closest-side,
    rgba(112,140,255,0.17), rgba(112,140,255,0.075) 40%, rgba(124,92,255,0.03) 68%, rgba(124,92,255,0) 100%);
  opacity:0; transition: opacity 2.2s ease .6s;
}
#nd-flylogo.is-in .nd-intro-halo > span{ opacity:1; animation: ndHalo 6.5s ease-in-out 2.8s infinite; }
@keyframes ndHalo{
  0%, 100% { opacity:1;   transform:scale(1); }
  50%      { opacity:.7;  transform:scale(1.06); }
}

.nd-intro-img{ filter: drop-shadow(0 0 .14em rgba(130,158,255, calc(.3 * var(--g)))); }
#nd-flylogo.is-in .nd-intro-img{ animation: ndIconShine 7s ease-in-out 1.75s infinite; }
@keyframes ndIconShine{
  0%, 16%, 100% { filter: drop-shadow(0 0 .14em rgba(130,158,255, calc(.3 * var(--g)))); }
  6%            { filter: drop-shadow(0 0 .24em rgba(175,195,255, calc(.8 * var(--g)))); }
}

.nd-intro-word > span{
  text-shadow: 0 0 .28em rgba(228,234,255,0), 0 0 .55em rgba(130,158,255, calc(.24 * var(--g)));
}
#nd-flylogo.is-in .nd-intro-word > span{ animation: ndShine 7s ease-in-out calc(1.9s + var(--i, 0) * 55ms) infinite; }
@keyframes ndShine{
  0%, 16%, 100% { text-shadow: 0 0 .28em rgba(228,234,255,0), 0 0 .55em rgba(130,158,255, calc(.24 * var(--g))); }
  6%            { text-shadow: 0 0 .28em rgba(228,234,255, calc(.7 * var(--g))), 0 0 .8em rgba(125,152,255, calc(.5 * var(--g))); }
}

#nd-flylogo.is-flying .nd-intro-halo{ display:none; }
#nd-flylogo.is-flying .nd-intro-img{ animation:none; filter:none; }
#nd-flylogo.is-flying .nd-intro-word > span{ animation:none; text-shadow:none; }

#nd-flylogo.is-instant .nd-intro-stroke,
#nd-flylogo.is-instant .nd-intro-dot,
#nd-flylogo.is-instant .nd-intro-word > span,
#nd-flylogo.is-instant .nd-intro-halo > span{ transition:none !important; }
#nd-intro.nd-replay .nd-intro-hint-in{ opacity:0; transform:translateY(10px); transition:none; }
@media (prefers-reduced-motion: reduce){
  .nd-intro-wheel, .nd-intro-hand, .nd-intro-handwrap, .nd-intro-ripple, .nd-intro-trail{ animation:none; }
  .nd-intro-handwrap{ opacity:1; }
  .nd-intro-stroke, .nd-intro-dot, .nd-intro-word > span{ transition-duration:.01s; transition-delay:0s; }
  #nd-flylogo.is-in .nd-intro-halo > span, #nd-flylogo.is-in .nd-intro-img, #nd-flylogo.is-in .nd-intro-word > span{ animation:none; }
}
