

#ib-splash{
  position:fixed;left:0;top:0;width:100%;height:100vh;height:100lvh;min-height:100%;z-index:6000;overflow:hidden;background:#dfe9f6;
  isolation:isolate;contain:layout paint;transform:translateZ(0);backface-visibility:hidden;will-change:opacity;
  --sp-line-w:min(300px,72vw);
  --sp-gap:14px;
  --sp-title:rgba(31,53,82,.92);
  --sp-sub:rgba(43,66,96,.76);
  --sp-track-top:rgba(247,251,255,.52);
  --sp-track-bottom:rgba(201,220,242,.23);
  --sp-track-line:rgba(241,247,255,.78);
  --sp-track-inner:rgba(62,98,143,.13);
  --sp-fill-a:rgba(105,153,202,.74);
  --sp-fill-b:rgba(139,182,222,.80);
  --sp-fill-c:rgba(190,217,243,.85);
  --sp-fill-glow:rgba(101,154,207,.22);
  --sp-breath:rgba(111,163,217,.27)
}
html.sp-dark #ib-splash,body.theme-infernal #ib-splash{
  background:#141a2e;
  --sp-title:rgba(255,255,255,.96);
  --sp-sub:rgba(232,238,247,.84);
  --sp-track-top:rgba(214,226,243,.13);
  --sp-track-bottom:rgba(70,86,111,.09);
  --sp-track-line:rgba(202,216,236,.23);
  --sp-track-inner:rgba(0,0,0,.26);
  --sp-fill-a:rgba(109,129,153,.62);
  --sp-fill-b:rgba(139,157,179,.68);
  --sp-fill-c:rgba(180,194,210,.72);
  --sp-fill-glow:rgba(105,129,157,.12);
  --sp-breath:rgba(149,167,190,.18)
}
#ib-splash .sp-bg{position:absolute;left:0;top:0;width:100%;height:100%;background:var(--bgimg) center/cover no-repeat;
  transform:translateZ(0);backface-visibility:hidden}
#ib-splash .sp-veil{position:absolute;left:0;top:0;width:100%;height:100%;background:var(--scrim);
  transform:translateZ(0);backface-visibility:hidden}

/* 中央信息：所有主体共用同一宽度、同一 50vw 中轴。 */
#ib-splash .sp-center{position:absolute;left:50%;top:47%;width:100%;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;gap:var(--sp-gap);padding:0 26px;
  opacity:0;animation:spIn .72s cubic-bezier(.2,.75,.25,1) .42s forwards}
@keyframes spIn{from{opacity:0;transform:translate(-50%,-50%)}to{opacity:1;transform:translate(-50%,-50%)}}


.sp-loading{position:relative;width:var(--sp-line-w);margin:0;text-align:center;
  font-family:var(--sys);font-style:italic;font-weight:600;font-synthesis:style;
  font-size:clamp(.88rem,3.55vw,.98rem);line-height:1.08;letter-spacing:.01em;
  color:var(--sp-title);text-shadow:0 1px 4px rgba(255,255,255,.40);white-space:nowrap}
html.sp-dark .sp-loading,body.theme-infernal .sp-loading{
  text-shadow:0 1px 3px rgba(8,16,34,.24),0 3px 12px rgba(8,16,34,.18)}
.sp-loading-word{position:relative;display:inline-block}
.sp-dots{position:static;display:inline-block;vertical-align:baseline;margin-left:.08em;width:1.15em;
  text-align:left;letter-spacing:.02em;white-space:nowrap}/* v219-p ：省略点占位参与居中，整行视觉重心回到中轴 */
.sp-dots.sp-dots6{width:2.3em}/* v130：Welcome 尾部 6 点循环专用宽度档 */

/* 进度条：轨道本体就是 --sp-line-w，百分比绝对挂右侧，绝不参与居中计算。无滑头。 */
.sp-prog{position:relative;display:flex;align-items:center;gap:10px;width:auto;margin:0;isolation:isolate}/* v219-p ：轨道＋百分比作为一组居中（原来百分比绝对挂右侧，整组偏右） */
.sp-prog::before{content:"";position:absolute;z-index:0;left:-3%;right:-3%;top:50%;height:16px;transform:translateY(-50%) scaleX(.965);border-radius:999px;
  background:radial-gradient(ellipse at center,var(--sp-breath) 0%,rgba(112,145,181,.075) 42%,transparent 74%);
  opacity:.14;pointer-events:none;animation:spBreathGlow 2.45s ease-in-out .55s infinite}/* v219-p ：去掉 filter:blur(6px)，渐变本身已是软边 */
@keyframes spBreathGlow{0%,100%{opacity:.10;transform:translateY(-50%) scaleX(.965)}50%{opacity:.48;transform:translateY(-50%) scaleX(1.015)}}
.sp-track{position:relative;z-index:1;flex:none;width:var(--sp-line-w);height:6px;border-radius:999px;overflow:hidden;isolation:isolate;
  background:linear-gradient(180deg,var(--sp-track-top),var(--sp-track-bottom));
  border:1px solid var(--sp-track-line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.52),inset 0 -1px 0 var(--sp-track-inner),0 5px 18px rgba(31,61,96,.12);
  transform:translateZ(0);backface-visibility:hidden}
html.sp-dark .sp-track,body.theme-infernal .sp-track{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),inset 0 -1px 0 var(--sp-track-inner),0 5px 18px rgba(0,0,0,.22)}
.sp-track::before{content:"";position:absolute;z-index:3;left:7px;right:7px;top:1px;height:1px;border-radius:999px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.72) 26%,rgba(255,255,255,.32) 70%,transparent);
  opacity:.7;pointer-events:none}
.sp-fill{position:absolute;z-index:1;left:0;top:0;bottom:0;width:100%;border-radius:inherit;overflow:hidden;
  background:linear-gradient(90deg,var(--sp-fill-a) 0%,var(--sp-fill-b) 58%,var(--sp-fill-c) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.54),inset 0 -1px 0 rgba(26,83,139,.16),0 0 14px var(--sp-fill-glow);
  transform-origin:left center;transform:translateZ(0) scaleX(0);will-change:transform;backface-visibility:hidden}
.sp-fill::before{content:"";position:absolute;inset:0;width:62%;
  background:linear-gradient(105deg,transparent 0 28%,rgba(255,255,255,.26) 45%,transparent 63%);
  transform:translateX(-135%);animation:spLiquidSheen 3.2s cubic-bezier(.45,0,.3,1) .8s infinite;opacity:.38;pointer-events:none}
@keyframes spLiquidSheen{0%,18%{transform:translateX(-135%)}68%,100%{transform:translateX(235%)}}
.sp-pct{position:relative;z-index:2;flex:none;width:2.6em;display:block;text-align:left;
  font-family:var(--sys);font-style:normal;font-weight:500;font-size:10.5px;line-height:1;letter-spacing:0;
  color:var(--sp-sub);text-shadow:0 1px 4px rgba(255,255,255,.40);
  font-variant-numeric:tabular-nums;white-space:nowrap}
html.sp-dark .sp-pct,body.theme-infernal .sp-pct{
  text-shadow:0 1px 2px rgba(8,14,28,.50),0 3px 10px rgba(8,14,28,.32)}

/* Welcome：与轨道同宽、同中轴；排版参数按锁屏顶部欢迎语口径。 */
.sp-welcome{width:var(--sp-line-w);min-height:1.08em;text-align:center;
  font-family:var(--sys);font-weight:600;font-size:clamp(.88rem,3.55vw,.98rem);line-height:1.08;
  letter-spacing:.01em;color:var(--sp-sub);text-shadow:0 1px 4px rgba(255,255,255,.40);white-space:nowrap;
  opacity:1;transform:none}
html.sp-dark .sp-welcome,body.theme-infernal .sp-welcome{
  text-shadow:0 1px 2px rgba(8,14,28,.50),0 3px 10px rgba(8,14,28,.32)}

/* 状态控制 */
#ib-splash.paused *,#ib-splash.suspended *{animation-play-state:paused!important}
#ib-splash.paused .sp-prog::before,#ib-splash.paused .sp-fill::before,
#ib-splash.suspended .sp-prog::before,#ib-splash.suspended .sp-fill::before{animation-play-state:paused!important}
#ib-splash.done{opacity:0;transition:opacity .72s ease}
@media (prefers-reduced-motion:reduce){
  #ib-splash .sp-center{animation-duration:.2s;animation-delay:0s}
  .sp-fill::before{animation:none;opacity:.2}
  .sp-prog::before{animation:none;opacity:.14}}
