/* WHAT: Owner-approved filling startup bar. WHY: Start quickly, then slow near full.
   HOW: One anchored visual estimate; actual first-frame readiness completes it. */
:root{color-scheme:light dark}
#app-startup{--boot-bg:#f7f8f7;--boot-ink:#172a21;--boot-accent:#007a3d;--boot-track:#dce8e0;--boot-muted:#52665b;position:fixed;inset:0;z-index:10000;display:grid;place-items:center;box-sizing:border-box;padding:24px;background:var(--boot-bg);color:var(--boot-ink);font:1rem/1.5 system-ui,sans-serif}
.startup-content{width:min(100%,28rem);text-align:center}
/* Keep the public document below the embedded app reachable during startup. */
#storefront-loading #app-startup{position:absolute}
.startup-brand{display:flex;justify-content:center;font-size:clamp(1.75rem,7vw,2.5rem);font-weight:900;letter-spacing:-1.2px;line-height:1.2}
.startup-brand span:last-child{color:var(--boot-accent)}
#app-startup-track{height:6px;width:min(224px,100%);margin:40px auto 18px;overflow:hidden;border-radius:3px;background:var(--boot-track)}
#app-startup-fill{display:block;width:100%;height:100%;background:var(--boot-accent);transform:scaleX(.08);transform-origin:left center;animation:startup-fill 30s cubic-bezier(.05,.85,.1,1) forwards}
#app-startup-message{margin:0;color:var(--boot-muted);font-size:1rem}
#app-startup-retry{font:inherit;min-height:44px;padding:8px 16px;margin-top:20px;border:1px solid var(--boot-accent);background:transparent;color:var(--boot-ink);border-radius:8px;cursor:pointer}
#app-startup[data-state=failed] #app-startup-fill,#app-startup[data-state=stalled] #app-startup-fill{animation-play-state:paused}
#app-startup[data-state=ready] #app-startup-fill{animation:none;transform:scaleX(1)}
@keyframes startup-fill{from{transform:scaleX(.08)}to{transform:scaleX(.97)}}
@media(prefers-color-scheme:dark){#app-startup{--boot-bg:#0e1b16;--boot-ink:#eef6f2;--boot-accent:#42d99b;--boot-track:#2c4338;--boot-muted:#a8bdb2}}
@media(prefers-reduced-motion:reduce){#app-startup-fill{animation:none;transform:scaleX(.25)}}
