/* ============ 开屏：Canoe（简约） ============ */
.splash{
  --sp-bg: #F4F2F0;
  --sp-bg2: #EBE8E4;
  --sp-ink: #2A2A2A;
  --sp-mute: #9A9691;
  --sp-line: #C4BFB8;
  position:fixed; top:0; left:0; right:0; bottom:0;
  /* 开屏不靠 vh 高度：四边钉死由 top+bottom 撑满，再老的 webview 也盖得住；
     之前 inset + dvh 在部分套壳浏览器里底边提前收，整页底下永远一条白边 */
  width:auto;
  height:auto;
  padding-bottom:env(safe-area-inset-bottom, 0px);
  background-color:var(--sp-bg2);
  z-index:9999;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  background:
    radial-gradient(ellipse 90% 60% at 50% 40%, #FAF9F7 0%, transparent 70%),
    linear-gradient(180deg, var(--sp-bg) 0%, var(--sp-bg2) 100%);
  color:var(--sp-ink);
  transition:opacity .65s cubic-bezier(.25,1,.4,1),
              visibility 0s linear .65s;
}
html[data-theme="dark"] .splash{
  --sp-bg: #141414;
  --sp-bg2: #0C0C0C;
  --sp-ink: #F2F2F2;
  --sp-mute: #8E8E93;
  --sp-line: #3A3A3C;
  background:
    radial-gradient(ellipse 90% 60% at 50% 40%, #1C1C1E 0%, transparent 70%),
    linear-gradient(180deg, var(--sp-bg) 0%, var(--sp-bg2) 100%);
}
.splash.out{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.splash-stage{
  position:relative;
  display:flex; flex-direction:column; align-items:center;
  padding:0 32px;
  text-align:center;
}
.splash-mark{
  width:72px; height:28px;
  margin-bottom:22px;
  color:var(--sp-line);
  opacity:0;
  transform:translateY(6px);
  animation:splashIn .8s cubic-bezier(.25,1,.4,1) .15s forwards;
}
.splash-mark svg{
  width:100%; height:100%;
  display:block;
}
.splash-brand{
  margin:0;
  font-family:"Outfit", "Noto Sans SC", sans-serif;
  font-weight:400;
  font-size:34px;
  letter-spacing:.34em;
  text-indent:.34em;
  color:var(--sp-ink);
  line-height:1;
  opacity:0;
  transform:translateY(8px);
  animation:splashIn .85s cubic-bezier(.25,1,.4,1) .28s forwards;
}
.splash-tag{
  margin:16px 0 0;
  font-family:"Outfit", "Noto Sans SC", sans-serif;
  font-size:11px;
  font-weight:400;
  letter-spacing:.42em;
  text-indent:.42em;
  text-transform:lowercase;
  color:var(--sp-mute);
  opacity:0;
  transform:translateY(6px);
  animation:splashIn .85s cubic-bezier(.25,1,.4,1) .48s forwards;
}
.splash-line{
  margin:28px 0 0;
  font-family:"Noto Sans SC", "Outfit", sans-serif;
  font-size:12px;
  font-weight:300;
  line-height:1.7;
  letter-spacing:.08em;
  color:var(--sp-mute);
  white-space:nowrap;
  opacity:0;
  transform:translateY(6px);
  animation:splashIn .9s cubic-bezier(.25,1,.4,1) .7s forwards;
}

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

@media (prefers-reduced-motion: reduce){
  .splash-mark, .splash-brand, .splash-tag, .splash-line{
    opacity:1; transform:none; animation:none;
  }
}
