/* 虹彩开场与作品周围的流体光雾。作品本身不参与滤镜或变形。 */
.spatial-home {isolation:isolate}
#crystal-atmosphere,
canvas[data-atmosphere-fallback] {
  position:fixed;inset:0;width:100%;height:100dvh;z-index:1;
  pointer-events:none;display:block;opacity:1;background:transparent;
}
.spatial-home>main,.spatial-home>.hub-footer {position:relative;z-index:2}
.spatial-home>.hub-header,.spatial-home>main,.spatial-home>.hub-footer {transition:opacity 1.2s cubic-bezier(.4,0,.2,1)}
body[data-crystal-intro=active]>.hub-header,body[data-crystal-intro=active]>main,body[data-crystal-intro=active]>.hub-footer {opacity:0}
.spatial-home .orbit-atmosphere {opacity:.22}
.spatial-home .space-invitation,.spatial-home .hub-footer {background:transparent;border:0;box-shadow:none}
.spatial-home>.hub-header {background:transparent;border:0;box-shadow:none;backdrop-filter:none}
.orbit-motion-actions {display:flex;align-items:center;gap:18px}
.orbit-toolbar .intro-replay {display:inline-flex;align-items:center;gap:7px}
.intro-replay svg {width:12px;height:12px}
.crystal-intro {
  position:fixed;inset:0;z-index:102;display:grid;place-items:center;
  color:#f0f2ff;isolation:isolate;
}
.crystal-intro[hidden] {display:none}
.spatial-home::after {
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;visibility:hidden;
  background:radial-gradient(ellipse at 48% 42%,#161330 0%,#070e1b 52%,#050a10 100%);
  transition:opacity 1.2s cubic-bezier(.4,0,.2,1);
}
body[data-crystal-intro]::after {opacity:1;visibility:visible}
body[data-crystal-intro] {overflow:hidden}
body[data-crystal-intro] .crystal-intro {z-index:102}
.crystal-intro-top,.crystal-intro-copy,.crystal-intro-enter {
  position:relative;z-index:104;
}
.crystal-intro-top {position:fixed;top:30px;left:44px;right:44px;display:flex;align-items:center;justify-content:space-between}
.crystal-intro-brand {display:flex;align-items:center;gap:12px;font-size:20px;letter-spacing:4px}
.crystal-intro-brand img {width:34px;height:34px;filter:brightness(1.8)}
.crystal-intro-skip {border:1px solid #dfe5ff25;border-radius:30px;background:#0a152340;color:#d3d8e1;padding:10px 17px;font-size:11px;cursor:pointer;backdrop-filter:blur(14px)}
.crystal-intro-copy {align-self:end;text-align:center;margin-bottom:16vh;pointer-events:none;animation:crystal-copy-in 1.4s .12s both}
.crystal-intro-copy p {font-size:9px;letter-spacing:5px;color:#c5cbe5;margin:0 0 17px}
.crystal-intro-copy h2 {font-family:"Songti SC","STSong",serif;font-size:clamp(31px,3.5vw,56px);font-weight:400;letter-spacing:5px;line-height:1.3;margin:0;text-shadow:0 2px 24px #03081780}
.crystal-intro-enter {position:absolute;bottom:6.5vh;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:25px;border:1px solid #e7e6ff40;border-radius:40px;background:linear-gradient(110deg,#fafaff15,#b2c7ff09);backdrop-filter:blur(16px);color:#e9eaff;padding:14px 23px;font-size:11px;letter-spacing:2px;cursor:pointer}
.crystal-intro-enter span {font-size:15px;color:#d6e0f4}
.crystal-intro.is-leaving {opacity:0;transition:opacity 1.2s cubic-bezier(.4,0,.2,1);pointer-events:none}
#hero-title:focus{outline:none}
body[data-crystal-intro=leaving]::after {opacity:0}
@keyframes crystal-copy-in {from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:540px){
  .crystal-intro-top{left:22px;right:22px;top:23px}
  .crystal-intro-brand{font-size:17px;gap:8px}
  .crystal-intro-copy{margin-bottom:22vh}
  .crystal-intro-copy h2{letter-spacing:2px;font-size:32px}
  .crystal-intro-copy p{font-size:8px;letter-spacing:3px}
  .crystal-intro-enter{bottom:12vh;font-size:10px;white-space:nowrap}
  .orbit-motion-actions{gap:11px}
  .orbit-toolbar .intro-replay{font-size:8px;letter-spacing:0}
}
html[data-motion=paused] #crystal-atmosphere,
html[data-motion=paused] canvas[data-atmosphere-fallback] {visibility:hidden}
@media(prefers-reduced-motion:reduce){
  #crystal-atmosphere,canvas[data-atmosphere-fallback],.intro-replay{display:none!important}
  .crystal-intro{display:none!important}
}
