.fairy-layer{z-index:40;pointer-events:none;position:fixed;inset:0;overflow:hidden}.fairy{pointer-events:auto;cursor:pointer;opacity:0;will-change:transform;-webkit-tap-highlight-color:transparent;background:0 0;border:0;margin:0;padding:0;transition:transform 2s cubic-bezier(.45,.05,.35,1),opacity .6s;position:absolute;top:0;left:0}.fairy.is-ready{opacity:1}.fairy:focus-visible{outline-offset:6px;border-radius:12px;outline:2px solid #f85125}.fairy__bob{transform-origin:50% 70%;animation:3.4s ease-in-out infinite fairyBob;display:block;position:relative}.fairy__sprite{height:clamp(74px,10vw,124px);transform:scaleX(var(--fairy-flip,1));filter:drop-shadow(0 8px 10px #0000002e);background-position:0 0;background-repeat:no-repeat;transition:filter .3s,transform .3s;display:block}.fairy__img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 8px 10px #0000002e);width:auto;height:clamp(74px,10vw,124px);transition:filter .3s,transform .3s;display:block}.fairy--reading .fairy__sprite{transform:scaleX(var(--fairy-flip,1)) scale(1.06);filter:drop-shadow(0 0 16px #ffcd6ef2)drop-shadow(0 8px 10px #0000002e)}.fairy--reading .fairy__img{filter:drop-shadow(0 0 16px #ffcd6ef2)drop-shadow(0 8px 10px #0000002e);transform:scale(1.06)}.fairy__sparkles{pointer-events:none;position:absolute;inset:0}.fairy__sparkles i{opacity:0;background:radial-gradient(circle,#fff 0%,#ffd36b 55%,#ffd36b00 75%);border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;top:42%;left:50%}.fairy--reading .fairy__sparkles i{animation:.95s ease-out forwards fairySparkle}.fairy__sparkles i:first-child{--sx:-42px;--sy:-30px;animation-delay:0s}.fairy__sparkles i:nth-child(2){--sx:40px;--sy:-26px;animation-delay:60ms}.fairy__sparkles i:nth-child(3){--sx:-30px;--sy:20px;animation-delay:.12s}.fairy__sparkles i:nth-child(4){--sx:34px;--sy:24px;animation-delay:.18s}.fairy__sparkles i:nth-child(5){--sx:0px;--sy:-46px;animation-delay:.1s}.fairy__sparkles i:nth-child(6){--sx:6px;--sy:40px;animation-delay:.24s}@keyframes fairyBob{0%,to{transform:translateY(0)rotate(-1.5deg)}50%{transform:translateY(-9px)rotate(1.5deg)}}@keyframes fairySparkle{0%{opacity:0;transform:translate(0)scale(.3)}30%{opacity:1}to{opacity:0;transform:translate(var(--sx,0), var(--sy,0)) scale(1.1)}}@media (max-width:640px){.fairy__sprite,.fairy__img{height:clamp(58px,15vw,88px)}}@media (prefers-reduced-motion:reduce){.fairy{transition:opacity .6s}.fairy__bob{animation:none}}
