/* Back-to-top rocket, drawn from the rocket in the IGNITE logo. */
.ignite-rocket{position:fixed;right:max(24px,env(safe-area-inset-right));bottom:calc(max(24px,env(safe-area-inset-bottom)) + var(--ignite-rocket-lift,0px));z-index:20;width:60px;height:60px;padding:0;margin:0;border:0;border-radius:50%;background:rgba(74,2,2,.72);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);box-shadow:0 12px 32px rgba(20,0,0,.45),inset 0 0 0 1px rgba(255,255,240,.16);color:#fffff0;cursor:pointer;overflow:visible;opacity:0;visibility:hidden;transform:translateY(18px) scale(.9);pointer-events:none;transition:opacity .4s ease,transform .5s cubic-bezier(.2,.8,.2,1),background-color .25s ease,visibility 0s linear .5s;-webkit-tap-highlight-color:transparent}
.ignite-rocket.is-visible{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition-delay:0s}
.ignite-rocket:hover{background:rgba(97,20,20,.82)}
.ignite-rocket:focus-visible{outline:2px solid #fffff0;outline-offset:4px}
.ignite-rocket svg{display:block;overflow:visible}

/* Reading progress, shown as the rocket's fuel ring. */
.ignite-rocket-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}
.ignite-rocket-ring circle{fill:none;stroke:rgba(255,255,240,.14);stroke-width:1.5}
.ignite-rocket-ring .ignite-rocket-fuel{stroke:#fffff0;stroke-width:2;stroke-linecap:round;transition:stroke-dashoffset .12s linear}

.ignite-rocket-ship{position:absolute;left:50%;top:50%;width:16px;height:29px;margin:-16px 0 0 -8px;fill:#fffff0;transition:transform .4s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.ignite-rocket-flame{transform-box:fill-box;transform-origin:50% 0;transform:scale(.9);transition:transform .3s ease}
.ignite-rocket-ship .ignite-rocket-flame{fill:#fffff0}
.ignite-rocket:hover .ignite-rocket-ship,.ignite-rocket:focus-visible .ignite-rocket-ship{transform:translateY(-3px)}
.ignite-rocket:hover .ignite-rocket-flame,.ignite-rocket:focus-visible .ignite-rocket-flame,.ignite-rocket.is-landing .ignite-rocket-flame,.ignite-rocket.is-launching .ignite-rocket-flame{fill:url(#ignite-rocket-fire);filter:drop-shadow(0 0 3px rgba(255,196,128,.85))}
.ignite-rocket:hover .ignite-rocket-flame,.ignite-rocket:focus-visible .ignite-rocket-flame{animation:ignite-rocket-flicker .12s ease-in-out infinite alternate}

/* Landing burn when the button first appears. */
.ignite-rocket.is-landing .ignite-rocket-ship{animation:ignite-rocket-land .85s cubic-bezier(.16,.84,.3,1) both}
.ignite-rocket.is-landing .ignite-rocket-flame{animation:ignite-rocket-landing-burn .85s ease-out both}

/* Launch: ignition shake, lift-off, contrail and a soft shockwave on the pad. */
.ignite-rocket-trail{position:absolute;left:50%;bottom:50%;width:2px;height:0;margin-left:-1px;border-radius:2px;background:linear-gradient(to top,rgba(255,255,240,0),rgba(255,255,240,.9));opacity:0;pointer-events:none}
.ignite-rocket::after{content:'';position:absolute;inset:0;border-radius:50%;border:1px solid rgba(255,255,240,.55);opacity:0;pointer-events:none}
.ignite-rocket.is-launching .ignite-rocket-ship{animation:ignite-rocket-launch 1s cubic-bezier(.55,0,.85,.35) forwards}
.ignite-rocket.is-launching .ignite-rocket-flame{animation:ignite-rocket-burn 1s ease-in forwards}
.ignite-rocket.is-launching .ignite-rocket-trail{animation:ignite-rocket-trail 1s cubic-bezier(.55,0,.85,.35) forwards,ignite-rocket-trail-fade 1.3s linear forwards}
.ignite-rocket.is-launching::after{animation:ignite-rocket-shock .8s ease-out .2s}

@keyframes ignite-rocket-flicker{from{transform:scale(.88,.92)}to{transform:scale(1.04,1.22)}}
@keyframes ignite-rocket-land{0%{transform:translateY(-34px);opacity:0}35%{opacity:1}100%{transform:none;opacity:1}}
@keyframes ignite-rocket-landing-burn{0%{transform:scale(1.1,1.9)}70%{transform:scale(1,1.2)}100%{transform:scale(.9)}}
@keyframes ignite-rocket-launch{0%{transform:none}8%{transform:translate(-.7px,1px)}14%{transform:translate(.7px,0)}20%{transform:translate(-.5px,1px)}26%{transform:translateY(0)}100%{transform:translateY(-115vh)}}
@keyframes ignite-rocket-burn{0%{transform:scale(.9)}24%{transform:scale(1.1,1.6)}100%{transform:scale(1.2,2.4)}}
@keyframes ignite-rocket-trail{0%,26%{height:0}100%{height:108vh}}
@keyframes ignite-rocket-trail-fade{0%{opacity:0}22%{opacity:.9}70%{opacity:.65}100%{opacity:0}}
@keyframes ignite-rocket-shock{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.9);opacity:0}}

/* Stay out of the way of open menus and dialogs. */
html.ignite-dialog-open .ignite-rocket,body:has(nav.ignite-menu-open) .ignite-rocket,body:has(nav[data-framer-name$="Open"]) .ignite-rocket{opacity:0!important;visibility:hidden!important;pointer-events:none!important}

@media(max-width:809px){.ignite-rocket{width:52px;height:52px;right:max(16px,env(safe-area-inset-right));bottom:calc(max(16px,env(safe-area-inset-bottom)) + var(--ignite-rocket-lift,0px))}.ignite-rocket-ship{width:14px;height:26px;margin:-14px 0 0 -7px}}
@media(hover:none){.ignite-rocket:hover .ignite-rocket-ship{transform:none}.ignite-rocket:hover .ignite-rocket-flame{animation:none}}
@media(prefers-reduced-motion:reduce){.ignite-rocket,.ignite-rocket-ship,.ignite-rocket-flame{transition:none!important;animation:none!important}}

/* Homepage launch on every load: ignition, a climbing arc with flame, glow, smoke, embers and a contrail. */
.ignite-hero-launch{position:fixed;inset:0;z-index:9;pointer-events:none;overflow:hidden;contain:strict}
.ignite-hero-trail{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ignite-hero-trail path{fill:none;stroke:url(#ignite-hero-trail-fade);stroke-linecap:round}
.ignite-hero-line{stroke-width:2}
.ignite-hero-glowline{stroke-width:9;opacity:.28;filter:blur(5px)}
.ignite-hero-ship{position:absolute;left:0;top:0;width:30px;height:55px;margin:-21px 0 0 -15px;transform-origin:15px 21px;will-change:transform}
.ignite-hero-ship svg{position:relative;display:block;width:100%;height:100%;overflow:visible;fill:#fffff0;filter:drop-shadow(0 0 8px rgba(255,236,210,.45))}
.ignite-hero-glow{position:absolute;left:50%;top:78%;width:110px;height:110px;margin:-55px 0 0 -55px;border-radius:50%;background:radial-gradient(circle,rgba(255,196,130,.55) 0%,rgba(240,137,79,.22) 38%,rgba(240,137,79,0) 70%);animation:ignite-hero-glow .18s ease-in-out infinite alternate}
.ignite-hero-flame{fill:url(#ignite-hero-fire);transform-box:fill-box;transform-origin:50% 0;animation:ignite-hero-flicker .09s ease-in-out infinite alternate;filter:drop-shadow(0 0 6px rgba(255,170,100,.95))}
.ignite-hero-flame-core{fill:#fffff0;transform-box:fill-box;transform-origin:50% 0;animation:ignite-hero-flicker .07s ease-in-out infinite alternate-reverse}
.ignite-hero-ignition{position:absolute;bottom:0;width:340px;height:200px;border-radius:50%;background:radial-gradient(ellipse at 50% 60%,rgba(255,214,160,.7) 0%,rgba(240,137,79,.3) 35%,rgba(240,137,79,0) 70%);opacity:0;transform:translate(-50%,50%)}
.ignite-hero-smoke,.ignite-hero-ember{position:absolute;left:0;top:0;border-radius:50%;will-change:transform,opacity}
.ignite-hero-smoke{background:radial-gradient(circle,rgba(255,244,232,.62) 0%,rgba(255,236,220,.26) 45%,rgba(255,236,220,0) 70%)}
.ignite-hero-ember{background:#ffd9a3;box-shadow:0 0 6px 2px rgba(255,170,100,.8)}
@keyframes ignite-hero-flicker{from{transform:scale(.82,.78)}to{transform:scale(1.08,1.18)}}
@keyframes ignite-hero-glow{from{opacity:.75;transform:scale(.92)}to{opacity:1;transform:scale(1.08)}}
@media(max-width:809px){.ignite-hero-ship{width:20px;height:37px;margin:-14px 0 0 -10px;transform-origin:10px 14px}.ignite-hero-ignition{width:240px;height:150px}}
@media(prefers-reduced-motion:reduce){.ignite-hero-launch{display:none}}
