/* A brief launch moment keeps the PWA from feeling like a browser page appearing all at once. */
.app-entering .app-shell{opacity:0;transform:translateY(8px);filter:blur(3px)}
.app-entering .afterlight-entry{opacity:1;visibility:visible;transition:opacity .48s ease,visibility 0s}
.app-shell{transition:opacity .72s cubic-bezier(.22,.75,.28,1),transform .72s cubic-bezier(.22,.75,.28,1),filter .72s ease}
.afterlight-entry{position:fixed;z-index:100;inset:0;display:grid;place-content:center;justify-items:center;gap:10px;overflow:hidden;background:radial-gradient(circle at 50% 40%,rgba(117,93,180,.34),transparent 38%),linear-gradient(145deg,#281b3d 0%,#171023 58%,#20142f 100%);color:#f9f3ff;opacity:1;transition:opacity .68s ease,visibility .68s step-end}
.afterlight-entry-glow{position:absolute;width:min(78vw,390px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,151,202,.28),rgba(137,184,255,.12) 38%,transparent 68%);filter:blur(8px);animation:afterlight-entry-glow 3s ease-in-out infinite}
.afterlight-entry-mark{position:relative;width:82px;height:82px;border-radius:25px;object-fit:cover;box-shadow:0 18px 44px rgba(3,1,9,.44);animation:afterlight-entry-mark .9s cubic-bezier(.2,.84,.25,1) both}
.afterlight-entry-name{position:relative;margin:8px 0 0;font-size:27px;font-weight:800;letter-spacing:-.7px;animation:afterlight-entry-copy .8s .13s ease both}
.afterlight-entry-copy{position:relative;margin:0;color:rgba(245,238,255,.68);font-size:14px;animation:afterlight-entry-copy .8s .25s ease both}
.app-ready .afterlight-entry{opacity:0;visibility:hidden;pointer-events:none}.app-ready .app-shell{opacity:1;transform:none;filter:none}
@keyframes afterlight-entry-mark{from{opacity:0;transform:translateY(15px) scale(.82)}to{opacity:1;transform:none}}
@keyframes afterlight-entry-copy{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes afterlight-entry-glow{50%{transform:scale(1.12);opacity:.72}}
@media(prefers-reduced-motion:reduce){.app-shell,.afterlight-entry{transition:none}.afterlight-entry-glow,.afterlight-entry-mark,.afterlight-entry-name,.afterlight-entry-copy{animation:none}}
