.app-opening{--green:#287f43;--ink:#111917;position:fixed;inset:0;z-index:9999;display:grid;place-items:center;overflow:hidden;isolation:isolate;color:var(--ink);background:#fbfcfb;opacity:1;transition:opacity 320ms cubic-bezier(.4,0,1,1),visibility 320ms linear}.app-opening[hidden]{display:none}.app-opening.is-exiting{opacity:0;visibility:hidden;pointer-events:none}.app-opening::before{content:"";position:absolute;inset:-18%;background:radial-gradient(circle at 50% 47%,rgba(40,127,67,.12),transparent 22%),radial-gradient(circle at 74% 18%,rgba(40,127,67,.055),transparent 24%);transform:translate3d(calc(var(--opening-x,0)*10px),calc(var(--opening-y,0)*10px),0);transition:transform 600ms cubic-bezier(.16,1,.3,1)}
.app-opening__poster{transition:opacity 180ms ease-out}.app-opening.is-styles-ready .app-opening__poster{opacity:0;pointer-events:none}.app-opening.is-loading *,.app-opening.is-loading *::before,.app-opening.is-loading *::after{animation-play-state:paused!important}
.app-opening__grid{position:absolute;inset:7%;opacity:0;background-image:linear-gradient(rgba(17,25,23,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(17,25,23,.055) 1px,transparent 1px);background-size:clamp(48px,6vw,86px) clamp(48px,6vw,86px);mask-image:radial-gradient(circle at center,#000 0,transparent 70%);animation:openingGridIn 900ms 120ms ease-out forwards;transform:perspective(900px) rotateX(62deg) translateY(18%);transform-origin:center bottom}.app-opening__scanner{position:absolute;left:12%;right:12%;top:50%;height:1px;opacity:0;background:linear-gradient(90deg,transparent,rgba(40,127,67,.45),transparent);box-shadow:0 0 18px rgba(40,127,67,.18);animation:openingScan 1100ms 260ms cubic-bezier(.65,0,.35,1) forwards}
.app-opening__stage{position:relative;z-index:2;display:grid;justify-items:center;padding:24px;transform:translateY(-1.5vh)}.app-opening__core{position:relative;width:clamp(82px,9vw,112px);aspect-ratio:1;padding:0;border:0;border-radius:22%;background:transparent;cursor:pointer;opacity:0;transform:scale(.9);animation:openingCoreIn 620ms 260ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__core img{position:absolute;inset:0;z-index:3;width:100%;height:100%;display:block;object-fit:cover;border-radius:22%;opacity:0;transform:scale(.94);animation:openingLogoIn 420ms 880ms cubic-bezier(.16,1,.3,1) forwards;box-shadow:0 22px 65px rgba(40,127,67,.19)}.app-opening__tile{position:absolute;width:46%;height:46%;border-radius:18%;background:var(--green);opacity:0}.app-opening__tile--a{left:0;top:0;transform:translate(-42px,-32px) rotate(-16deg);animation:openingTileA 760ms 300ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__tile--b{right:0;top:0;transform:translate(42px,-32px) rotate(16deg);animation:openingTileB 760ms 360ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__tile--c{left:27%;bottom:0;transform:translateY(46px) rotate(12deg);animation:openingTileC 760ms 420ms cubic-bezier(.16,1,.3,1) forwards}
.app-opening__orbit{position:absolute;left:50%;top:0;width:clamp(142px,16vw,202px);aspect-ratio:1;transform:translate(-50%,-22%);pointer-events:none}.app-opening__orbit::before,.app-opening__orbit::after{content:"";position:absolute;inset:0;border:1px solid rgba(40,127,67,.18);border-radius:50%;opacity:0;animation:openingRing 950ms 850ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__orbit::after{animation-delay:980ms}.app-opening__orbit i{position:absolute;left:50%;top:50%;width:4px;height:4px;border-radius:50%;background:var(--green);opacity:0;transform-origin:0 0}.app-opening__orbit i:nth-child(1){animation:openingParticleA 1200ms 540ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__orbit i:nth-child(2){animation:openingParticleB 1300ms 610ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__orbit i:nth-child(3){animation:openingParticleC 1150ms 680ms cubic-bezier(.16,1,.3,1) forwards}
.app-opening__copy{margin-top:28px;text-align:center}.app-opening__copy p,.app-opening__copy h1,.app-opening__copy small{margin:0;opacity:0;transform:translateY(10px)}.app-opening__copy p{color:rgba(17,25,23,.45);font-size:9px;font-weight:800;letter-spacing:.18em;animation:openingCopyIn 480ms 1080ms ease-out forwards}.app-opening__copy h1{margin-top:9px;font-size:clamp(29px,4vw,51px);line-height:1.05;font-weight:400;letter-spacing:0;animation:openingCopyIn 560ms 1190ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__copy h1 em{position:relative;display:inline-block;margin:0 .04em;color:var(--green);font:inherit;font-style:normal;letter-spacing:.06em}.app-opening__copy h1 em::after{content:"";position:absolute;left:2%;right:8%;bottom:-.12em;height:1px;background:var(--green);transform:scaleX(0);transform-origin:left;animation:openingAiLine 520ms 1530ms cubic-bezier(.16,1,.3,1) forwards}.app-opening__copy small{display:block;margin-top:12px;color:#66736c;font-size:13px;animation:openingCopyIn 520ms 1330ms ease-out forwards}
.app-opening__progress{position:absolute;left:max(22px,env(safe-area-inset-left));right:max(22px,env(safe-area-inset-right));bottom:max(28px,calc(env(safe-area-inset-bottom) + 10px));height:1px;overflow:hidden;background:#e7ebe9}.app-opening__progress i{display:block;width:24%;height:100%;background:var(--green);transform:translateX(-110%);animation:openingProgress 1480ms 700ms cubic-bezier(.65,0,.35,1) forwards}.app-opening__status{position:absolute;left:50%;bottom:max(43px,calc(env(safe-area-inset-bottom) + 25px));margin:0;color:rgba(17,25,23,.42);font-size:9px;letter-spacing:.12em;transform:translateX(-50%);opacity:0;animation:openingStatus 420ms 1450ms ease-out forwards}.app-opening__skip{position:absolute;top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));z-index:4;padding:10px;border:0;color:rgba(17,25,23,.5);background:transparent;font-size:12px;cursor:pointer;opacity:0;animation:openingStatus 350ms 520ms ease-out forwards}.app-opening.is-pressed .app-opening__core{transform:scale(.96);transition:transform 160ms ease-out}.app-opening.is-pulsing .app-opening__orbit::before{animation:openingTap 520ms cubic-bezier(.16,1,.3,1)}
@keyframes openingGridIn{to{opacity:.72}}@keyframes openingScan{0%{opacity:0;transform:translateY(-28vh)}18%,75%{opacity:1}100%{opacity:0;transform:translateY(28vh)}}@keyframes openingCoreIn{to{opacity:1;transform:scale(1)}}@keyframes openingLogoIn{to{opacity:1;transform:scale(1)}}@keyframes openingTileA{0%{opacity:0}28%{opacity:.65}100%{opacity:0;transform:translate(0,0) rotate(0)}}@keyframes openingTileB{0%{opacity:0}28%{opacity:.65}100%{opacity:0;transform:translate(0,0) rotate(0)}}@keyframes openingTileC{0%{opacity:0}28%{opacity:.65}100%{opacity:0;transform:translate(0,0) rotate(0)}}@keyframes openingRing{0%{opacity:.55;transform:scale(.42)}100%{opacity:0;transform:scale(1.35)}}@keyframes openingParticleA{0%{opacity:0;transform:rotate(18deg) translateX(0)}24%{opacity:.8}100%{opacity:0;transform:rotate(160deg) translateX(86px)}}@keyframes openingParticleB{0%{opacity:0;transform:rotate(145deg) translateX(0)}24%{opacity:.6}100%{opacity:0;transform:rotate(308deg) translateX(72px)}}@keyframes openingParticleC{0%{opacity:0;transform:rotate(255deg) translateX(0)}24%{opacity:.7}100%{opacity:0;transform:rotate(412deg) translateX(92px)}}@keyframes openingCopyIn{to{opacity:1;transform:translateY(0)}}@keyframes openingAiLine{to{transform:scaleX(1)}}@keyframes openingProgress{to{transform:translateX(420%)}}@keyframes openingStatus{to{opacity:1}}@keyframes openingTap{0%{opacity:.55;transform:scale(.45)}100%{opacity:0;transform:scale(1.45)}}
@media(max-width:600px){.app-opening__grid{inset:5%;background-size:54px 54px}.app-opening__stage{transform:translateY(-4vh)}.app-opening__copy{margin-top:24px}}@media(prefers-reduced-motion:reduce){.app-opening *,.app-opening *::before,.app-opening *::after{animation-duration:1ms!important;animation-delay:0ms!important;animation-iteration-count:1!important}.app-opening__grid,.app-opening__scanner,.app-opening__orbit{display:none}}

/* Visible before the 75KB logo image finishes downloading on a cold iOS start. */
.app-opening__core{background:#287f43;color:#fff;opacity:1;transform:scale(1);animation:none}
.app-opening__core::before{content:none}
.app-opening__core img{opacity:1;transform:scale(1);animation:none}
.app-opening.is-deferred *,.app-opening.is-deferred *::before,.app-opening.is-deferred *::after{animation-play-state:paused!important}
