/* Approved launch tokens. Kept identical in the web and packaged clients. */
:root{--launch-light:#f7f6fa;--launch-dark:#0a0a0f;--launch-bg:var(--launch-light);--launch-mark-size:128px;--launch-fade:140ms;--launch-ease:cubic-bezier(.22,.61,.36,1);--launch-layer:999999;--launch-gap:18px;--launch-radius:20px;--launch-block:#e8e5ee;--launch-card:#fff;--launch-phone-dur:550ms;--launch-photo-dur:650ms;--launch-photo-settle:900ms;--launch-phone-y:10px;}
@media(prefers-color-scheme:dark){:root{--launch-bg:var(--launch-dark);--launch-block:#2d233a;--launch-card:#17121f}}
:root[data-launch-theme="light"]{--launch-bg:var(--launch-light);--launch-block:#e8e5ee;--launch-card:#fff}
:root[data-launch-theme="dark"]{--launch-bg:var(--launch-dark);--launch-block:#2d233a;--launch-card:#17121f}
#gt-boot-loader,.gt-launch-wait{position:fixed;inset:0;display:grid;place-items:center;background:var(--launch-bg);z-index:var(--launch-layer)}
#gt-boot-loader{transition:opacity var(--launch-fade) ease-out}
.gt-launch-mark{display:block;width:var(--launch-mark-size);height:var(--launch-mark-size);object-fit:contain}
/* Approved Assemble, at the preview's 2.5x slower playback. Boot only:
   React/data placeholders stay assembled, and readiness never awaits motion. */
.gt-launch-assembly{position:relative}
.gt-launch-assembly img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}
.gt-launch-facet{visibility:hidden}
@supports(clip-path:polygon(0% 0%,100% 0%,100% 100%)){
  @media(prefers-reduced-motion:no-preference){
    .gt-launch-assembly{--launch-assemble-duration:1300ms;--launch-assemble-step:250ms;--launch-assemble-total:1800ms;--launch-assemble-ease:cubic-bezier(.18,.78,.22,1)}
    .gt-launch-facet{visibility:visible;animation:var(--facet-motion) var(--launch-assemble-duration) var(--launch-assemble-ease) var(--facet-delay,0ms) both,gt-launch-facet-finish var(--launch-assemble-total) step-end forwards}
    .gt-launch-cyan{clip-path:polygon(0% 0%,100% 0%,100% 29%,34% 46%,34% 55%,23% 60%,36% 71.5%,35.5% 79%,0% 79%);transform-origin:32% 59%;--facet-motion:gt-launch-cyan-in}
    .gt-launch-violet{clip-path:polygon(100% 29%,100% 100%,74% 100%,71% 45.5%,64% 48%,45% 100%,0% 100%,0% 79%,35.5% 79%,36% 71.5%,23% 60%,34% 55%,34% 46%);transform-origin:45% 58%;--facet-motion:gt-launch-violet-in;--facet-delay:var(--launch-assemble-step)}
    .gt-launch-ember{clip-path:polygon(64% 48%,71% 45.5%,74% 100%,45% 100%);transform-origin:64% 48%;--facet-motion:gt-launch-ember-in;--facet-delay:calc(2 * var(--launch-assemble-step))}
    .gt-launch-intact{animation:gt-launch-intact-in var(--launch-assemble-total) step-end both}
  }
}
@keyframes gt-launch-cyan-in{from{transform:translate(-27px,-13px) rotate(-12deg) scale(.85);opacity:.18}to{transform:translate(0,0) rotate(0deg) scale(1);opacity:1}}
@keyframes gt-launch-violet-in{from{transform:translate(30px,5px) rotate(10deg) scale(.85);opacity:.12}to{transform:translate(0,0) rotate(0deg) scale(1);opacity:1}}
@keyframes gt-launch-ember-in{from{transform:translate(8px,32px) rotate(12deg) scale(.72);opacity:.12}to{transform:translate(0,0) rotate(0deg) scale(1);opacity:1}}
@keyframes gt-launch-facet-finish{from{visibility:visible}to{visibility:hidden}}
@keyframes gt-launch-intact-in{from{visibility:hidden}to{visibility:visible}}
#gt-boot-loader[data-removing]{opacity:0;pointer-events:none}
.gt-launch-wait{z-index:var(--z-overlay,100)}
html[data-launch-pending] .gt-pane-loader,html[data-launch-pending] [data-testid="shell-loading-overlay"]{background:var(--launch-bg)!important}
.gt-launch-skeleton{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--launch-gap);width:100%;min-height:100%;padding:calc(var(--safe-area-top,0px) + 24px) 16px calc(var(--gt-dock-reserve,84px) + var(--safe-area-bottom,0px));background:var(--gt-app-bg,var(--launch-bg))}
.gt-launch-card{padding:16px 12px;border:1px solid var(--launch-block);border-radius:var(--launch-radius);background:var(--launch-card)}
.gt-launch-card i{display:block;width:82%;height:13px;border-radius:5px;background:var(--launch-block);margin:12px 0 24px}
.gt-launch-card i:nth-child(2){width:53%}.gt-launch-card i:last-child{margin-bottom:12px}
.gt-launch-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.gt-launch-week b{height:25px;border-radius:7px;background:var(--launch-block)}
@media(prefers-reduced-motion:reduce){#gt-boot-loader,.gt-launch-mark{transition:none!important;transform:none!important}}
/* Product wrappers own arrival; phone children retain their scroll transforms. */
@keyframes gt-launch-product{from{translate:0 var(--launch-phone-y)}to{translate:0 0}}
@keyframes gt-launch-atmosphere{from{opacity:0}to{opacity:1}}
@keyframes gt-launch-photo-settle{from{scale:1.02}to{scale:1}}
@media(prefers-reduced-motion:reduce){.landing-journey .stage,.landing-journey .opening .mobile-visual,.landing-journey .story-backdrop picture{animation:none!important;translate:none;scale:none}}
.landing-journey[data-motion="off"] .story-backdrop picture{animation:none;scale:none}

/* Exceptional stalled-start recovery; healthy opens retain their original motion. */
#gt-boot-loader.gt-launch-recovery{align-content:center;gap:24px;padding:24px;box-sizing:border-box;font-family:system-ui,sans-serif;color:#211b2d}
.gt-launch-recovery-copy{max-width:340px;text-align:center;line-height:1.5}
.gt-launch-recovery-copy p{margin:0 0 8px;font-size:16px}
.gt-launch-recovery-copy p+p{font-size:14px;opacity:.7}
.gt-launch-recovery-copy button{margin-top:16px;min-height:44px;padding:10px 24px;border:1px solid currentColor;border-radius:12px;color:inherit;background:transparent;font:inherit;cursor:pointer}
.gt-launch-recovery-copy button:focus-visible{outline:2px solid currentColor;outline-offset:4px}
@media(prefers-color-scheme:dark){#gt-boot-loader.gt-launch-recovery{color:#f7f6fa}}
:root[data-launch-theme="light"] #gt-boot-loader.gt-launch-recovery{color:#211b2d}
:root[data-launch-theme="dark"] #gt-boot-loader.gt-launch-recovery{color:#f7f6fa}

.gt-launch-recovery .gt-launch-facet{display:none}
.gt-launch-recovery .gt-launch-intact{animation:none;visibility:visible}
