/* Film instruments share a pearl edge and the alphabet's hexagonal cells. */
.stage .p-loading{position:absolute;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:radial-gradient(ellipse,#160c27ed,#0a0613c9);color:#ece6f7;text-align:center;padding:24px}
.p-loading[hidden],.p-bookend[hidden],.p-recovery[hidden]{display:none!important}
.p-moons{width:clamp(130px,22vmin,230px);height:auto;overflow:visible;fill:none;stroke:url(#p-pearl);stroke-width:1.25}
.p-orbit{opacity:.3;stroke-dasharray:2 8;transform-origin:80px 50px;animation:p-orbit 18s linear infinite}
.p-sun{stroke:#ffcf7a;fill:#bf375d22;filter:drop-shadow(0 0 5px #ff4fb477)}
.p-moon{animation:p-meet 3.6s ease-in-out infinite;transform-origin:80px 50px}
.p-moon circle{fill:#1a0e2cf2;stroke-width:1.6}.p-moon path{opacity:.5;stroke-width:.7}
.p-nima{--travel:15px;stroke:#cabbed}.p-thessa{--travel:5px;animation-delay:-.16s;stroke:#f2a0c6}.p-orun{--travel:-7px;animation-delay:-.32s;stroke:#a684cd}
.p-loading-label{font:12px/1.5 var(--font-mono,monospace);letter-spacing:.13em}.p-loading-detail{font:10px/1.5 var(--font-mono,monospace);color:#ad9fce}
.p-count{display:flex;align-items:center;gap:8px;color:#c9a6ff;min-height:34px}.p-count svg{width:24px;height:30px}
.p-bookend{position:absolute;inset:0;z-index:25;display:grid;place-items:center;text-align:center;pointer-events:none;background:radial-gradient(ellipse at center,#0a0613b0,transparent 72%);animation:p-arrive .8s ease both;padding:50px 20px}
.p-credit{max-width:90%;color:#ece6f7;text-shadow:0 2px 24px #0a0613}.p-script{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;color:#ffb3df;filter:drop-shadow(0 0 12px #c9a6ff44)}
.p-script .w{display:inline-flex}.p-script svg{width:clamp(28px,5.3vmin,64px);height:auto}.p-script svg line{stroke:url(#pearlGrad)}
.p-credit p{font:clamp(13px,2.2vmin,22px)/1.8 var(--font-body,Sora,sans-serif);letter-spacing:.08em;margin:22px 0 0}.p-credit strong{font-weight:500}
.p-closing{pointer-events:auto;background:radial-gradient(ellipse,#120b1fe8,#0a0613b0)}
.p-closing .p-moons{width:140px;margin-bottom:20px;stroke:url(#p-close-pearl)}.p-closing .p-moon,.p-closing .p-orbit{animation:none}
.p-end-actions{display:flex;justify-content:center;gap:24px;margin-top:32px}.p-end-actions button,.p-recovery button{border:1px solid #b98ef466;border-radius:3px;background:#120b1fbb;color:#ece6f7;padding:12px 20px;cursor:pointer;min-height:48px;font:12px var(--font-mono,monospace)}
.p-end-actions button{display:flex;align-items:center;gap:10px}.p-end-actions svg{display:block;width:36px;height:36px;fill:none;stroke:#ffb3df;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.p-end-actions .v-cell{opacity:.3}.p-end-actions button:hover,.p-recovery button:hover{background:#352049}.p-end-actions button:focus-visible,.p-recovery button:focus-visible{outline:2px solid #9ef0ff;outline-offset:4px}
.p-ending :is(.lyric,.v-transport-zone,.hh-transport,.sigil,.compass){visibility:hidden}.p-opening .lyric{visibility:hidden}.p-failed .p-moon,.p-failed .p-orbit{animation:none}
@keyframes p-meet{0%,100%{transform:translateX(0)}50%{transform:translateX(var(--travel))}}
@keyframes p-orbit{to{transform:rotate(360deg)}}
@keyframes p-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:520px){.p-end-actions{gap:12px}.p-end-actions button{padding:10px 14px}.p-script{gap:12px}.p-closing .p-moons{width:110px;margin-bottom:12px}.p-credit p{margin-top:14px}.p-end-actions{margin-top:22px}}
@media(prefers-reduced-motion:reduce){.p-bookend,.p-moon,.p-orbit{animation:none!important}}
