/* Adopted B: a gentle invitation for each layer not yet entered. */
body.invitation .portal{position:relative;isolation:isolate;--glow:174,218,234;--cycle:5.8s;--phase:-1.4s}
body.invitation .portal-rin{--glow:225,198,167;--cycle:6.6s;--phase:-4.1s}
body.invitation .portal-maku{--glow:198,191,227;--cycle:6.1s;--phase:-2.6s}
body.invitation .portal::before,body.invitation .portal::after{content:"";position:absolute;pointer-events:none;z-index:-1;opacity:0;transition:opacity 1.1s ease;border-radius:50%}
body.invitation .portal::before{inset:-15px 5px;background:radial-gradient(ellipse,rgba(var(--glow),.19),rgba(var(--glow),.055) 38%,transparent 72%);filter:blur(7px);animation:invitation-drift var(--cycle) ease-in-out var(--phase) infinite}
body.invitation .portal::after{width:48px;height:40px;left:calc(50% - 24px);top:-9px;background:radial-gradient(ellipse,rgba(var(--glow),.3),transparent 70%);filter:blur(5px);animation:invitation-drift calc(var(--cycle) * 1.3) ease-in-out var(--phase) infinite reverse}
body.invitation.away .portal[data-visited="false"]::before,body.invitation.away .portal[data-visited="false"]::after{opacity:1}
body.invitation .portal .portal-symbol{transition:opacity 1.1s,text-shadow 1.1s}
body.invitation.away .portal[data-visited="false"] .portal-symbol{opacity:.9;text-shadow:0 0 7px rgba(var(--glow),.65),0 0 21px rgba(var(--glow),.42);animation:invitation-symbol var(--cycle) ease-in-out var(--phase) infinite}
body.invitation.away .portal[data-visited="false"] .portal-name{opacity:.85;text-shadow:0 0 13px rgba(var(--glow),.2)}
body.invitation.away .portal[data-visited="false"] .portal-action{opacity:.85}
body.invitation .portal[data-visited="true"] .portal-symbol{opacity:.5;text-shadow:none}
body.invitation .portal:hover .portal-symbol,body.invitation .portal:focus-visible .portal-symbol{opacity:1}
body.invitation .portal::after{width:84px;height:58px;left:calc(50% - 42px);top:4px;background:radial-gradient(ellipse,rgba(var(--glow),.18),transparent 70%)}
@keyframes invitation-drift{0%,100%{transform:translate(-3px,2px) scale(.91);filter:blur(8px) brightness(.65)}50%{transform:translate(4px,-3px) scale(1.08);filter:blur(6px) brightness(1.25)}}
@keyframes invitation-symbol{0%,100%{opacity:.68}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){body.invitation .portal::before,body.invitation .portal::after,body.invitation .portal .portal-symbol{animation:none!important;transition:none!important}}
