/* The emblem, not the combined emblem/copy block, owns the viewport centre. */
:root{--emblem-size:96px}
.scene-loader{position:fixed;inset:0;z-index:90;overflow:hidden;background:transparent;color:#b8c7d0;text-align:center}
/* Solid covers reveal the homepage only where their inner edges have passed.
   The one-pixel overlap keeps fractional viewport widths from showing a seam. */
.scene-loader::before,.scene-loader::after{content:"";position:absolute;top:0;bottom:0;width:calc(50% + 1px);z-index:0;background:#081313;opacity:1;transform:translateX(0);transition:transform 1600ms cubic-bezier(.25,.35,.45,1);pointer-events:none}
.scene-loader::before{left:0}
.scene-loader::after{right:0}
.scene-loader[hidden]{display:none}
.loading-emblem{position:absolute;left:50%;top:50%;width:var(--emblem-size);height:var(--emblem-size);transform:translate(-50%,-50%)}
.loading-flower{display:block;width:100%;height:100%;overflow:visible}
.loading-copy{position:absolute;left:50%;top:calc(50% + var(--emblem-size)/2 + 14px);width:min(360px,calc(100% - 40px));transform:translateX(-50%)}
.scene-loader>.loading-emblem,.scene-loader>.loading-copy{z-index:1;opacity:1;transition:opacity 240ms linear}
.loading-message{margin:0;font-size:13px;font-weight:400;line-height:1.9;letter-spacing:.16em;color:#aabbc6}
.loading-retry{margin:16px 0 0;padding:9px 17px;border:1px solid #aebfd040;border-radius:3px;background:transparent;color:#dbe3ec;font:inherit;font-size:12px;letter-spacing:.08em;cursor:pointer}
.loading-retry[hidden]{display:none}
.loading-retry:focus-visible{outline:1px solid #d2d9f4;outline-offset:5px}
.loading-petal,.loading-petal-sway{transform-box:fill-box;transform-origin:50% 85%;opacity:1;transform:none}
.loading-petal{animation:petal-awaken 1200ms ease-in-out calc(400ms + var(--order)*80ms) both}
.loading-petal--lower{--order:0;--in-x:18px;--in-y:-12px;--in-turn:-5deg;--drift-x:-5px;--drift-y:8px;--drift-turn:-1deg}
.loading-petal--left{--order:1;--in-x:22px;--in-y:8px;--in-turn:5deg;--drift-x:-12px;--drift-y:-5px;--drift-turn:-1.3deg}
.loading-petal--front{--order:2;--in-x:-18px;--in-y:12px;--in-turn:-4deg;--drift-x:10px;--drift-y:-8px;--drift-turn:1.2deg}
.loading-petal--rear{--order:3;--in-x:-16px;--in-y:16px;--in-turn:-5deg;--drift-x:12px;--drift-y:-7px;--drift-turn:1.4deg}
.loading-petal--upper{--order:4;--in-x:5px;--in-y:22px;--in-turn:3deg;--drift-x:2px;--drift-y:-14px;--drift-turn:-.8deg}
.loading-petal-sway{animation:petal-sway 2600ms ease-in-out calc(2000ms + var(--order)*130ms) infinite}
.loading-petal-light{opacity:0;animation:petal-light 2600ms ease-in-out calc(2000ms + var(--order)*130ms) infinite}
/* Start with the approved, fully open emblem at its original scale and pose.
   If loading continues, gently fold inward and return to this same open pose.
   These animation delays never hold up readiness or the existing exit. */
@keyframes petal-awaken{0%,100%{transform:none}45%{transform:translate(var(--in-x),var(--in-y)) rotate(var(--in-turn)) scale(.9)}}
@keyframes petal-sway{0%,68%,100%{transform:none}30%{transform:translate(var(--drift-x),var(--drift-y)) rotate(var(--drift-turn)) scale(1.015)}}
@keyframes petal-light{0%,64%,100%{opacity:0}28%{opacity:.42}}
.scene-loader.is-leaving{pointer-events:none}
/* Fade the logo first, then unroll the solid covers without fading them. */
.scene-loader.is-leaving::before,.scene-loader.is-leaving::after{transition-delay:240ms}
.scene-loader.is-leaving::before{transform:translateX(-100%)}
.scene-loader.is-leaving::after{transform:translateX(100%)}
.scene-loader.is-leaving>.loading-emblem,.scene-loader.is-leaving>.loading-copy{opacity:0}
/* Freeze in place; resetting animation would snap the petals to a new size. */
.scene-loader.is-leaving .loading-petal,.scene-loader.is-leaving .loading-petal-sway,.scene-loader.is-leaving .loading-petal-light{animation-play-state:paused}
.scene-loader.is-error .loading-petal,.scene-loader.is-error .loading-petal-sway,.scene-loader.is-error .loading-petal-light{animation:none}
.scene-loader.is-error::before,.scene-loader.is-error::after,.scene-loader.is-error>.loading-emblem,.scene-loader.is-error>.loading-copy{transition:none}
@media(max-width:700px){:root{--emblem-size:80px}.loading-copy{top:calc(50% + var(--emblem-size)/2 + 16px)}.loading-message{font-size:12px;letter-spacing:.14em}}
@media(max-height:380px){.loading-copy{top:calc(50% + var(--emblem-size)/2 + 6px)}.loading-retry{margin-top:8px;padding:6px 14px}}
@media(prefers-reduced-motion:reduce){.scene-loader::before,.scene-loader::after,.scene-loader>.loading-emblem,.scene-loader>.loading-copy{transition:none}.loading-petal,.loading-petal-sway,.loading-petal-light{animation:none}}
