/* ============================================================
   preloader.css — brand intro overlay (refined)
   ============================================================ */
#preloader{
  position:fixed;inset:0;z-index:9999;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(ellipse 90% 70% at 50% 42%, #0a1124 0%, #060912 60%, #04060d 100%);
  transition:opacity .9s var(--ease), visibility .9s var(--ease);
}
#preloader.done{opacity:0;visibility:hidden;}
#preloader.done .pl-stage{transform:translateY(-14px) scale(.97);opacity:0;transition:all .7s var(--ease);}
#preloader.done .pl-orb{transform:scale(1.12);}
body.preloading{overflow:hidden;}

/* atmosphere */
.pl-atmo{position:absolute;inset:0;pointer-events:none;}
#pl-stars{position:absolute;inset:0;width:100%;height:100%;}
.pl-neb{position:absolute;border-radius:50%;filter:blur(80px);opacity:.55;mix-blend-mode:screen;}
.pl-neb.a{width:560px;height:560px;top:-160px;left:50%;margin-left:-440px;
  background:radial-gradient(circle,rgba(34,131,198,.55),transparent 68%);animation:plneb 9s ease-in-out infinite;}
.pl-neb.b{width:520px;height:520px;bottom:-180px;left:50%;margin-left:60px;
  background:radial-gradient(circle,rgba(19,183,166,.42),transparent 68%);animation:plneb 11s ease-in-out infinite reverse;}
@keyframes plneb{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(20px,18px) scale(1.08);}}

.pl-stage{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:30px;}

/* orb + logo */
.pl-orb{position:relative;width:176px;height:176px;display:flex;align-items:center;justify-content:center;
  transition:transform .7s var(--ease);}
.pl-orb .ring{position:absolute;border-radius:50%;border:1px solid rgba(140,180,240,.16);}
.pl-orb .ring.a{inset:-14px;animation:plspin 3.4s linear infinite;border-top-color:rgba(34,131,198,.8);}
.pl-orb .ring.b{inset:-32px;animation:plspin 5.4s linear infinite reverse;border-bottom-color:rgba(19,183,166,.6);}
/* soft aura behind the shard (replaces the old orb sphere) */
.pl-orb .shard-glow{position:absolute;inset:18px;border-radius:50%;
  background:radial-gradient(circle at 50% 48%, rgba(34,131,198,.5), rgba(19,183,166,.16) 50%, transparent 72%);
  filter:blur(20px);animation:plpulse 2.6s ease-in-out infinite;}
.pl-orb .logo{position:relative;z-index:2;width:84px;height:auto;
  filter:drop-shadow(0 0 14px rgba(34,131,198,.9)) drop-shadow(0 0 30px rgba(19,183,166,.6));
  opacity:0;transform:scale(.7);animation:pllogo 1s var(--ease) .15s forwards, plshimmer 3.4s ease-in-out 1.1s infinite;}
@keyframes plshimmer{0%,100%{filter:drop-shadow(0 0 14px rgba(34,131,198,.9)) drop-shadow(0 0 30px rgba(19,183,166,.6));}
  50%{filter:drop-shadow(0 0 20px rgba(46,182,255,1)) drop-shadow(0 0 44px rgba(19,183,166,.8));}}

/* orbiting sparks */
.pl-orb .spark{position:absolute;top:50%;left:50%;width:6px;height:6px;border-radius:50%;
  background:#aee8ff;box-shadow:0 0 10px #37c6ff,0 0 18px rgba(19,183,166,.7);margin:-3px 0 0 -3px;}
.pl-orb .spark.s1{animation:plorbit 4.2s linear infinite;}
.pl-orb .spark.s2{width:4px;height:4px;animation:plorbit 6s linear infinite reverse;}
.pl-orb .spark.s3{width:5px;height:5px;animation:plorbit 5.2s linear infinite;animation-delay:-2s;}
@keyframes plorbit{from{transform:rotate(0deg) translateX(104px) rotate(0deg);}
  to{transform:rotate(360deg) translateX(104px) rotate(-360deg);}}

@keyframes plspin{to{transform:rotate(360deg);}}
@keyframes plpulse{0%,100%{transform:scale(1);opacity:.85;}50%{transform:scale(1.1);opacity:1;}}
@keyframes pllogo{to{opacity:1;transform:scale(1);}}

/* wordmark + tagline */
.pl-name{font-family:var(--display);font-weight:400;letter-spacing:.4em;text-transform:uppercase;
  font-size:17px;color:var(--ink);padding-left:.4em;margin-top:18px;
  opacity:0;transform:translateY(8px);animation:plrise .8s var(--ease) .4s forwards;}
.pl-tag{font-family:var(--display);font-weight:400;letter-spacing:.28em;text-transform:uppercase;
  font-size:10.5px;color:var(--ink-dim);margin-top:-16px;padding-left:.28em;
  opacity:0;animation:plfade .8s var(--ease) .55s forwards;}

/* meter */
.pl-meter{display:flex;align-items:center;gap:14px;margin-top:12px;
  opacity:0;animation:plfade .8s var(--ease) .65s forwards;}
.pl-bar{width:200px;height:3px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden;}
.pl-bar > span{display:block;height:100%;width:0;border-radius:3px;background:var(--grad);
  box-shadow:0 0 14px rgba(34,131,198,.6);transition:width .3s var(--ease);}
.pl-pct{font-family:var(--display);font-size:13px;font-weight:500;letter-spacing:.08em;color:var(--ink-soft);
  min-width:38px;text-align:right;font-variant-numeric:tabular-nums;}

@keyframes plfade{to{opacity:1;}}
@keyframes plrise{to{opacity:1;transform:translateY(0);}}

@media (prefers-reduced-motion:reduce){
  .pl-orb .ring,.pl-orb .shard-glow,.pl-orb .spark,.pl-neb{animation:none;}
  .pl-orb .spark{display:none;}
  .pl-orb .logo,.pl-name,.pl-tag,.pl-meter{animation:none;opacity:1;transform:none;}
}
