/* The loading screen (#163; r56 D, #322: on the theme's tokens; its Return to sign in is the quiet button). The
   emblems are art: their colours are palette tokens in dist/theme.css. */
.connection-loading{position:fixed;inset:0;z-index:var(--z-loading);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ui-space-lg);background:radial-gradient(ellipse at 50% 40%,var(--pal-loading-glow),var(--pal-loading-ground) 70%);color:var(--pal-loading-parchment);text-align:center;font-family:var(--ui-font);padding:calc(var(--ui-space-xl) + var(--ui-space-md))}.connection-loading[hidden]{display:none}.connection-loading h1{font-family:var(--ui-font-title);font-size:var(--ui-fs-display);font-weight:var(--ui-fw-strong);letter-spacing:.06em;margin:calc(var(--ui-space-xl) + var(--ui-space-xs)) 0 0}.connection-loading p{font-size:var(--ui-fs-num);color:var(--ui-text-2)}.connection-loading a{display:inline-flex;align-items:center;min-height:var(--ui-h-lg);padding:0 var(--ui-space-lg);font-size:var(--ui-fs-md);margin-top:var(--ui-space-md)}.loading-emblem{position:relative;width:120px;height:120px;display:grid;place-items:center}.loading-emblem i{position:absolute;inset:0;border:var(--ui-border) solid var(--pal-loading-ring);border-left-color:transparent;border-right-color:transparent;border-radius:var(--ui-radius-round);animation:loading-orbit 5s linear infinite}.loading-emblem i:nth-child(2){inset:14px;border-color:var(--pal-loading-ring-gold) transparent;animation-direction:reverse;animation-duration:3.6s}.loading-emblem i:nth-child(3){inset:28px;animation-duration:2.8s}.loading-emblem b{font-size:var(--ui-fs-display);color:var(--pal-loading-gold);animation:loading-glow 2s ease-in-out infinite alternate}.connecting body{overflow:hidden}.connection-failed .loading-emblem i,.connection-failed .loading-emblem b{animation-play-state:paused}@keyframes loading-orbit{to{transform:rotate(360deg)}}@keyframes loading-glow{to{opacity:.4;transform:scale(.8)}}@media(prefers-reduced-motion:reduce){.loading-emblem i,.loading-emblem b{animation:none}}
/* #163 E1 "chase" (Joseph, 7 Oct): sword lunges into the bow, the bow shoots the staff, the staff casts at the sword. */
.loading-emblem.ldr-chase{display:block;--c:3.6s;--ground:var(--pal-loading-ground);--line:var(--pal-loading-line);--parchment:var(--pal-loading-parchment);--gold:var(--pal-loading-gold);--steel:var(--pal-loading-steel);--steel-dark:var(--pal-loading-steel-dark);--wood:var(--pal-loading-wood);--wood-dark:var(--pal-loading-wood-dark);--rift:var(--pal-loading-rift);--rift-light:var(--pal-loading-rift-light)}
.ldr-steel{fill:var(--steel)}.ldr-steel-dark{fill:var(--steel-dark)}.ldr-gold{fill:var(--gold)}.ldr-wood{fill:var(--wood)}.ldr-wood-dark{fill:var(--wood-dark)}
.ldr-string{fill:none;stroke:var(--parchment);stroke-width:.9}.ldr-limb{fill:none;stroke:var(--wood);stroke-width:4;stroke-linecap:round}
.ldr-gem{fill:var(--rift)}.ldr-gem-glow{fill:var(--rift);opacity:.25}.ldr-arrow-shaft{stroke:var(--parchment);stroke-width:1.4;stroke-linecap:round}.ldr-arrow-head{fill:var(--steel)}.ldr-fletch{fill:var(--gold)}
.ldr-v{display:block;width:100%;aspect-ratio:1;overflow:visible}
.ldr-v *{transform-box:view-box;transform-origin:0 0}
.ldr-v .ldr-ring{fill:none;stroke:var(--line);stroke-width:1;stroke-dasharray:2 5}
.ldr-v .ldr-d2{animation-delay:calc(var(--c)*-2/3)}
.ldr-v .ldr-d3{animation-delay:calc(var(--c)*-1/3)}
/* each weapon's own flinch offset (was an inline style; r56 D: classes, so reduced motion needs no !important) */
.ldr-v .ldr-o1{animation-delay:calc(var(--c)*-0.1633)}
.ldr-v .ldr-o2{animation-delay:calc(var(--c)*-0.83)}
.ldr-v .ldr-o3{animation-delay:calc(var(--c)*-0.4967)}
.ldr-spin{transform-origin:100px 100px;animation:ldr-spin calc(var(--c)*3) linear infinite}
@keyframes ldr-spin{to{transform:rotate(360deg)}}
.ldr-dash{transform-origin:100px 100px;animation:ldr-dash var(--c) ease-in-out infinite}
@keyframes ldr-dash{0%{transform:rotate(0)}9%{transform:rotate(-10deg)}17%{transform:rotate(66deg)}22%{transform:rotate(62deg)}33.33%,100%{transform:rotate(0)}}
.ldr-flinch{transform-box:fill-box;transform-origin:center;animation:ldr-flinch var(--c) ease-out infinite}
@keyframes ldr-flinch{0%{transform:none}3%{transform:scale(.8) rotate(14deg)}12%,100%{transform:none}}
.ldr-bolt{transform-origin:100px 100px;opacity:0;animation:ldr-bolt var(--c) cubic-bezier(.4,0,.8,1) infinite}
.ldr-bolt .ldr-glow{fill:var(--rift);opacity:.35}
.ldr-bolt .ldr-core{fill:var(--rift-light)}
@keyframes ldr-bolt{0%,10%{opacity:0;transform:rotate(0)}10.1%{opacity:1;transform:rotate(2deg)}17%{opacity:1;transform:rotate(66deg)}17.1%,100%{opacity:0;transform:rotate(66deg)}}
.ldr-flare{fill:var(--rift);opacity:0;transform-box:fill-box;transform-origin:center;animation:ldr-flare var(--c) ease-out infinite}
@keyframes ldr-flare{0%,7%{opacity:0;transform:scale(.5)}10%{opacity:.8;transform:scale(1.9)}16%,100%{opacity:0;transform:scale(1)}}
.ldr-shoot{transform-origin:100px 100px;animation:ldr-shoot var(--c) ease-in-out infinite}
@keyframes ldr-shoot{0%{transform:rotate(0)}8%{transform:rotate(-6deg)}11%{transform:rotate(3deg)}18%,100%{transform:rotate(0)}}
.ldr-arrow{transform-origin:100px 100px;opacity:0;animation:ldr-arrow var(--c) linear infinite}
@keyframes ldr-arrow{0%,10%{opacity:0;transform:rotate(0)}10.1%{opacity:1;transform:rotate(4deg)}17%{opacity:1;transform:rotate(70deg)}17.1%,100%{opacity:0;transform:rotate(70deg)}}
.ldr-nock{animation:ldr-nock var(--c) step-end infinite}
@keyframes ldr-nock{0%{opacity:1}10%{opacity:0}30%{opacity:1}}
@keyframes ldr-calm{0%,100%{opacity:.45}16%{opacity:1}40%{opacity:.45}}
@media(prefers-reduced-motion:reduce){.ldr-v *{animation:none}.ldr-v .ldr-fx{opacity:0}.ldr-v .ldr-flinch{animation:ldr-calm var(--c) ease-in-out infinite}.ldr-v .ldr-d2{animation-delay:calc(var(--c)*-2/3)}.ldr-v .ldr-d3{animation-delay:calc(var(--c)*-1/3)}}
.connection-failed .ldr-v *{animation-play-state:paused}
