/* The existing live solar scene loosens, falls silent, and reveals the book. */
body.gravity-arriving { overflow:hidden; }
body.gravity-arriving #spaceStage { animation:gravityDislocate 2.9s ease-in-out both; transform-origin:58% 45%; will-change:transform; }
body.gravity-arriving > :is(.header,main,footer,.space-vignette,#planetLabels,#moonLabels,#satelliteExplore) { animation:gravityLetGo 1.9s ease both; pointer-events:none; }
.gravity-arrival { position:fixed;inset:0;z-index:1000;overflow:hidden;isolation:isolate; }
.gravity-arrival[hidden] { display:none; }
.gravity-well { position:absolute;inset:0;overflow:hidden; }
.gravity-well i { position:absolute;left:58%;top:45%;width:32vmax;height:32vmax;margin:-16vmax;border:1px solid #a8c8e328;border-radius:50%;box-shadow:inset 0 0 70px #8599c319,0 0 60px #9682ad16;opacity:0;animation:gravityTide 2.7s ease-out both; }
.gravity-well i:nth-child(2) { animation-delay:.18s; }
.gravity-well i:nth-child(3) { animation-delay:.38s;border-color:#ddba8533; }
.gravity-dust i { position:absolute;left:var(--x);top:var(--y);width:2px;height:2px;background:#e1e7ed;border-radius:50%;box-shadow:0 0 9px #acc8eb;opacity:0;animation:gravityLift 2.8s var(--d) ease-in both; }
.gravity-void { position:absolute;inset:0;background:#000;opacity:0;transition:opacity 1.05s cubic-bezier(.3,0,.4,1); }
.gravity-arrival.is-void .gravity-void { opacity:1; }
.gravity-whisper { position:absolute;left:0;top:67%;width:100%;text-align:center;color:#d5c6a8;font:clamp(18px,2vw,30px) 'Orbit Court','Orbit Manuscript',cursive;letter-spacing:.3em;opacity:0;animation:gravityWhisper 2.7s ease both; }
.gravity-arrival button { position:absolute;top:22px;left:32px;border:0;background:transparent;color:#a9b2c2;padding:12px;font:16px 'Orbit Court','Orbit Manuscript',cursive;cursor:pointer; }
.gravity-arrival.is-void button { opacity:0;pointer-events:none; }
#gravityBook { background:#000; }
#gravityBook .grimoire-room { background:radial-gradient(ellipse at 50% 48%,#111119 0%,#09090f 44%,#030407 80%); }
#gravityBook[open].is-materializing { animation:grimoireAwaken 4.5s cubic-bezier(.4,0,.2,1) both; }
#gravityBook.is-materializing .grimoire-room { animation:grimoireMaterialize 4.5s cubic-bezier(.4,0,.2,1) both;pointer-events:none; }
@keyframes gravityDislocate { 0%{transform:none} 28%{transform:translate3d(-3px,3px,0) rotate(-.18deg) scale(1.007)} 58%{transform:translate3d(4px,-7px,0) rotate(.35deg) scale(1.02)} 100%{transform:translate3d(-7px,-25px,0) rotate(-.55deg) scale(1.055)} }
@keyframes gravityLetGo { 0%,12%{opacity:1;transform:none} 100%{opacity:0;transform:translateY(-16px)} }
@keyframes gravityTide { 0%{opacity:0;transform:scale(.45) rotateX(40deg)} 30%{opacity:.65} 100%{opacity:0;transform:scale(3.8) rotateX(4deg)} }
@keyframes gravityLift { 0%{opacity:0;transform:none} 30%{opacity:.6} 100%{opacity:0;transform:translate3d(var(--drift),-160px,0)} }
@keyframes gravityWhisper { 0%,20%{opacity:0;transform:translateY(10px)} 48%,68%{opacity:.62} 100%{opacity:0;transform:translateY(-9px)} }
@keyframes grimoireMaterialize { from{opacity:0} to{opacity:1} }
@keyframes grimoireAwaken { from{--grimoire-light:0} to{--grimoire-light:1} }
@media(max-width:700px) { .gravity-arrival button{left:8px;top:9px;font-size:13px}.gravity-whisper{top:62%;font-size:20px} }
@media(prefers-reduced-motion:reduce) { .gravity-arrival{display:none} #gravityBook.is-materializing .grimoire-room{animation:none} }
