/* Desktop-only, hand-drawn SVG companion with flowing blue/pink/lilac star dust. */
.mimi-companion{position:fixed;z-index:3;pointer-events:none;isolation:isolate;contain:layout style}
.mimi-actor{position:relative;display:block;width:100%;padding:0;border:0;border-radius:45%;background:none;color:#fff0fa;cursor:pointer;pointer-events:auto;transform-origin:50% 76%;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.mimi-actor:hover,.mimi-actor:active{background:none}
.mimi-actor:focus-visible{outline:1px dashed #f8d6ef;outline-offset:8px}
.mimi-art{width:100%;height:auto;overflow:visible;filter:drop-shadow(0 3px 3px #61466426) drop-shadow(0 0 8px #e3bdeb45)}
.mimi-float{animation:mimi-float 4.8s ease-in-out infinite;transform-box:view-box;transform-origin:210px 290px}
.mimi-tail{animation:mimi-tail 5.5s ease-in-out infinite;transform-box:view-box;transform-origin:220px 355px}
.mimi-ear-left{animation:mimi-ear-left 6s ease-in-out infinite;transform-box:view-box;transform-origin:150px 172px}
.mimi-ear-right{animation:mimi-ear-right 6s ease-in-out infinite;transform-box:view-box;transform-origin:150px 172px}
.mimi-eyes{animation:mimi-blink 6.3s infinite;transform-box:fill-box;transform-origin:center}
.mimi-paw{animation:mimi-paw 5.2s ease-in-out infinite;transform-box:view-box;transform-origin:178px 314px}
.mimi-sparkle{animation:mimi-twinkle 3.2s ease-in-out infinite}
.mimi-sparkle:nth-child(2n){animation-delay:-1.3s;animation-duration:4.2s}
.mimi-sparkle:nth-child(3n){animation-delay:-2.1s}
.mimi-halo{position:absolute;inset:0;width:100%;height:auto;opacity:0;filter:drop-shadow(0 0 5px #dac6ff);pointer-events:none}
.mimi-halo-orbit{transform-box:view-box;transform-origin:210px 272px;animation:mimi-orbit 34s linear infinite}
.mimi-halo-orbit-reverse{transform-box:view-box;transform-origin:210px 272px;animation:mimi-orbit 45s linear infinite reverse}
.mimi-caption{display:flex;align-items:center;justify-content:center;gap:8px;position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .3s;color:#fff0fa;text-shadow:0 1px 5px #675574;font-size:11px;letter-spacing:3px}
.mimi-caption::before,.mimi-caption::after{content:"";width:4px;height:4px;background:#f8d9f0;transform:rotate(45deg);box-shadow:0 0 5px #f1c5f7}
.mimi-companion[data-state="visible"] .mimi-caption{opacity:.9}
.mimi-actor::after{content:"点击迷迷 · 变回羽毛笔";position:absolute;left:50%;bottom:-33px;transform:translateX(-50%);padding:6px 9px;border-radius:8px;background:#383544e6;color:#fff1fa;font-size:11px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s}
.mimi-companion[data-state="visible"] .mimi-actor:is(:hover,:focus-visible)::after{opacity:1}
.mimi-companion:not([data-state="visible"]) .mimi-float{animation:none}
.mimi-companion:not([data-state="visible"]) .mimi-actor::after{display:none}
.mimi-companion #mimi-character{transition:none}
.mimi-magic{position:fixed;inset:0;z-index:4;width:100%;height:100%;pointer-events:none;overflow:visible}
#mimi-dust-particles,#mimi-dust-haze{mix-blend-mode:screen}
/* No duplicate pen, desk shadow or pearl highlight remains during the spell. */
.app:not([data-mimi-state="hidden"])[data-mimi-state] :is(#room-desk-quill,#room-quill-contact-shadow,#room-quill-night-pearl-protection,#room-right-quill-cast-shadow,#room-quill-surface-lustre,[data-reflection-target="quill-feather-and-metal"],[data-mimi-quill-pass]){opacity:0}
.app:not([data-mimi-state="hidden"])[data-mimi-state] #mimi-quill-button{visibility:hidden;pointer-events:none}
@keyframes mimi-float{0%,100%{transform:translateY(0) rotate(-.7deg)}50%{transform:translateY(-7px) rotate(.7deg)}}
@keyframes mimi-tail{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(4deg)}}
@keyframes mimi-ear-left{0%,100%{transform:rotate(-2deg)}45%{transform:rotate(3deg)}70%{transform:rotate(-1deg)}}
@keyframes mimi-ear-right{0%,100%{transform:rotate(-2deg)}45%{transform:rotate(3deg)}70%{transform:rotate(-1deg)}}
@keyframes mimi-blink{0%,43%,47%,76%,80%,100%{transform:scaleY(1)}45%,78%{transform:scaleY(.06)}}
@keyframes mimi-paw{0%,100%{transform:rotate(-.7deg)}50%{transform:rotate(1deg)}}
@keyframes mimi-twinkle{0%,100%{opacity:.3}50%{opacity:1}}
@keyframes mimi-orbit{to{transform:rotate(360deg)}}
.app:is(.reduced-motion,.motion-paused) :is(.mimi-float,.mimi-tail,.mimi-ear-left,.mimi-ear-right,.mimi-eyes,.mimi-paw,.mimi-sparkle,.mimi-halo-orbit,.mimi-halo-orbit-reverse){animation:none}
@media(prefers-reduced-motion:reduce){.mimi-companion *{animation:none!important}.mimi-caption,.mimi-actor::after{transition:none}}
@media(max-width:900px),(max-height:540px){#mimi-quill-button,.mimi-companion,.mimi-magic{display:none!important}}
