/* cartoon open (/cartoon-preview/ only) */
.ca-l{display:inline-block;transform-origin:50% 100%}
.cartoon:not(.ca-run) main>h1{visibility:hidden}
.cartoon:not(.ca-run):after{content:"";position:fixed;inset:0;background:#04030e;z-index:9;animation:ca-fail 0s 3s forwards}
@keyframes ca-fail{to{visibility:hidden}}
.ca-run .ca-l{animation:ca-drop .78s calc(250ms + var(--i)*60ms) both cubic-bezier(.3,.6,.3,1)}
.ca-run .ca-l.ca-crook{animation-name:ca-drop-crook}
.ca-l.ca-kicked{animation:ca-jelly 1.1s both linear!important}
@keyframes ca-drop{0%{transform:translateY(-160%) scale(.7,1.45);opacity:0}40%{transform:translateY(0) scale(.82,1.25);opacity:1}52%{transform:translateY(0) scale(1.45,.6)}68%{transform:translateY(-28%) scale(.88,1.14)}82%{transform:translateY(0) scale(1.14,.88)}92%{transform:scale(.97,1.03)}100%{transform:none}}
@keyframes ca-drop-crook{0%{transform:translateY(-160%) scale(.7,1.45);opacity:0}40%{transform:translateY(0) scale(.82,1.25);opacity:1}52%{transform:translateY(0) scale(1.45,.6)}68%{transform:translateY(-34%) rotate(-25deg) scale(.9,1.1)}84%{transform:translateY(3px) rotate(22deg)}92%{transform:translateY(4px) rotate(15deg)}100%{transform:translateY(4px) rotate(17deg)}}
@keyframes ca-jelly{0%{transform:translateY(4px) rotate(17deg)}10%{transform:translateY(-6px) rotate(-16deg) scale(1.3,.78)}22%{transform:rotate(11deg) scale(.82,1.24)}34%{transform:rotate(-7deg) scale(1.16,.88)}46%{transform:rotate(4deg) scale(.92,1.09)}58%{transform:rotate(-2deg) scale(1.05,.96)}72%{transform:rotate(1deg) scale(.98,1.02)}100%{transform:none}}
.ca-ov{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:8}
@media (prefers-reduced-motion:reduce){.ca-l{animation:none!important;transform:none!important}.cartoon main>h1{visibility:visible}.cartoon:after{display:none}.ca-ov{display:none}}
/* chart-to-dust beat */
.dust-stage{height:95vh;min-height:420px;display:flex;align-items:center;justify-content:center;pointer-events:none}
.dust-stage .m-dust{width:min(86vw,560px);height:min(70vw,420px);opacity:0;animation:none}
.dust-ov{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:4}
@media (prefers-reduced-motion:reduce){.dust-stage .m-dust{opacity:.6}.dust-ov{display:none}}
/* MOOD: kick-small  v2: the head logo gets kicked */
.logo.ca-boing{animation:ca-boing 1.25s linear both!important;transform-origin:50% 90%}
@keyframes ca-boing{0%{transform:none}8%{transform:translateX(-10px) rotate(-14deg) scale(1.18,.8)}20%{transform:translateX(4px) rotate(10deg) scale(.86,1.16)}32%{transform:rotate(-7deg) scale(1.1,.92)}44%{transform:rotate(5deg) scale(.95,1.06)}56%{transform:rotate(-3deg) scale(1.03,.98)}70%{transform:rotate(1.5deg)}84%{transform:rotate(-.6deg)}100%{transform:none}}
/* v2: chart glow when the dust lands */
.cartoon-page .schem svg{transition:filter 1.2s ease-out}
.cartoon-page .schem.glow svg{filter:drop-shadow(0 0 3px rgba(0,229,255,.55)) drop-shadow(0 0 10px rgba(0,229,255,.28))}
.cartoon-page .schem.glow-in svg{animation:ca-bloom 1.8s ease-out both}
@keyframes ca-bloom{0%{filter:drop-shadow(0 0 0 rgba(0,229,255,0))}35%{filter:drop-shadow(0 0 6px rgba(0,229,255,.9)) drop-shadow(0 0 22px rgba(0,229,255,.45))}100%{filter:drop-shadow(0 0 3px rgba(0,229,255,.55)) drop-shadow(0 0 10px rgba(0,229,255,.28))}}
/* MOOD: moon-runoff  v2 story: distribution, moon, exit, return */
.cartoon-page .dust-stage{display:none}
.orbit.ca-reform{animation:ca-reform 1.6s cubic-bezier(.2,.8,.2,1) both}
@keyframes ca-reform{0%{opacity:0;transform:scale(.55);filter:blur(6px)}60%{opacity:1;filter:blur(0)}100%{opacity:1;transform:none}}

.ca-story{position:relative;width:100%;pointer-events:none}
.ca-story>.schem{position:sticky;pointer-events:auto}
.ca-story .schem figcaption{transition:opacity .5s}
.ca-rm{display:none}
@media (prefers-reduced-motion:reduce){.logo.ca-boing{animation:none!important}.cartoon-page .schem svg{animation:none!important;filter:drop-shadow(0 0 3px rgba(0,229,255,.5))}.ca-story{height:auto!important}.ca-story>.schem{position:relative;top:auto!important}.ca-rm{display:block}.orbit.ca-reform{animation:none}}
