/* Cats are contained visual additions; original login copy and form stay intact. */
#loginCompanion{position:absolute;left:74%;bottom:26%;width:clamp(150px,11vw,210px);z-index:2;pointer-events:none;rotate:var(--companion-look,0deg);transition:rotate .18s}
.companion-sprite{aspect-ratio:3/4;width:100%;background:url('assets/companions/cats-v1.png?v=20261020-1') 0 0/400% 200% no-repeat;transform-origin:50% 95%;animation:companionBreath 3.5s ease-in-out infinite;pointer-events:none}
.companion-bubble{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:4px;padding:7px 12px;max-width:180px;white-space:nowrap;font:12px/1.5 system-ui,'Microsoft YaHei',sans-serif;background:#fff;color:#475569;border-radius:12px;box-shadow:0 5px 20px #0002}
#desktopCompanion{position:fixed;left:12px;top:12px;width:128px;z-index:10020;touch-action:none;user-select:none;cursor:grab;border-radius:18px;font-family:system-ui,'Microsoft YaHei',sans-serif}
#desktopCompanion:active{cursor:grabbing}#desktopCompanion:focus-visible,#desktopCompanion button:focus-visible,#desktopCompanionRestore:focus-visible{outline:3px solid #38bdf8;outline-offset:3px}
#desktopCompanion .companion-sprite{background-position:0 100%;filter:drop-shadow(0 7px 7px #0f172a1c)}
#desktopCompanionClose{position:absolute;top:0;right:0;width:32px;height:32px;padding:0;z-index:1;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:#475569;font:22px/1 system-ui;cursor:pointer;box-shadow:none;opacity:0}
#desktopCompanionClose:hover,#desktopCompanionClose:focus-visible,#desktopCompanion.companion-touch-controls #desktopCompanionClose{opacity:1}
.companion-drag-hint{display:block;margin-top:1px;background:#ffffffed;color:#64748b;text-align:center;font-size:10px;line-height:22px;border-radius:18px;pointer-events:none;opacity:0}
#desktopCompanion:hover .companion-drag-hint,#desktopCompanion:focus-visible .companion-drag-hint,#desktopCompanion.companion-touch-controls .companion-drag-hint{opacity:1}
#desktopCompanion.companion-walking .companion-sprite{animation:none}
#desktopCompanionRestore{position:fixed;right:16px;bottom:16px;z-index:10020;padding:9px 14px;border:1px solid #dbe3ee;background:#fff;color:#0f766e;border-radius:20px;box-shadow:0 4px 16px #0f172a12;font:12px/1.5 system-ui,'Microsoft YaHei',sans-serif;cursor:pointer}
#loginCompanion[hidden],#desktopCompanion[hidden],#desktopCompanionRestore[hidden]{display:none!important}.companion-paused .companion-sprite{animation-play-state:paused}
@keyframes companionBreath{0%,100%{transform:scale(1)}50%{transform:scale(1.012,1.018)}}
@media(min-width:821px) and (max-width:1200px){#loginCompanion{left:auto;right:2%;bottom:26%;width:150px}#loginCompanion .companion-bubble{bottom:15px;left:-4px;transform:translateX(-100%);margin:0}}
@media(max-width:820px){#authMask .auth-visual{min-height:300px}#authMask .auth-hero{padding-right:112px}#loginCompanion{left:auto;right:12px;bottom:15px;width:110px}.companion-bubble{font-size:10px;padding:5px 7px;max-width:140px}#desktopCompanion{width:108px}}
@media(prefers-reduced-motion:reduce){.companion-sprite{animation:none}#loginCompanion{transition:none;rotate:0deg!important}}

@media(min-width:821px) and (max-width:1000px) and (max-height:720px){#loginCompanion{width:110px;right:16px;bottom:18%}#loginCompanion .companion-bubble{bottom:15px;left:-4px;transform:translateX(-100%);margin:0;font-size:10px;padding:5px 7px}}

/* Complete walk frames keep decoded pixels resident between steps. */
#desktopCompanion .companion-sprite{position:relative}
#desktopCompanion .companion-sprite canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#desktopCompanion .companion-sprite canvas[hidden]{display:none}
