/* Tony Tarz site mascot – drop-in widget. All classes prefixed .tm- */
.tm-root{
  --tm-w:132px;            /* cat width; height follows sprite aspect (292/200) */
  --tm-h:calc(var(--tm-w) * 1.46);
  --tm-pink:#ff8fb8;
  position:fixed; left:0; top:0; width:var(--tm-w); height:var(--tm-h);
  z-index:2147483000; pointer-events:none;           /* never blocks the page */
  will-change:transform; transform:translate3d(-999px,-999px,0);
  font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  -webkit-tap-highlight-color:transparent;
}
@media (max-width:600px){ .tm-root{ --tm-w:96px; } }

.tm-shadow{
  position:absolute; left:14%; right:14%; bottom:-3%; height:9%;
  background:radial-gradient(closest-side,rgba(0,0,0,.55),rgba(0,0,0,0));
  border-radius:50%; transform-origin:50% 50%; pointer-events:none;
}
.tm-cat{
  position:absolute; inset:0; z-index:1; pointer-events:auto; cursor:grab; touch-action:none;
  background:none; border:0; padding:0; margin:0; outline:none;
  transform-origin:50% 100%;
}
.tm-cat:focus-visible{ outline:2px dashed var(--tm-pink); outline-offset:4px; border-radius:16px; }
.tm-root.tm-dragging .tm-cat{ cursor:grabbing; }
.tm-lean{ position:absolute; inset:0; transform-origin:50% 95%; transition:transform .35s cubic-bezier(.3,1.4,.5,1); }
.tm-move{ position:absolute; inset:0; transform-origin:50% 100%; }
.tm-flip{ position:absolute; inset:0; transition:transform .28s ease; }
.tm-flip.tm-left{ transform:scaleX(-1); }
.tm-breathe{ position:absolute; inset:0; transform-origin:50% 100%; animation:tm-breathe 2.6s ease-in-out infinite; }
.tm-sprite{
  position:absolute; inset:0; background-repeat:no-repeat;
  background-size:1200% 800%; background-position:0 0;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.35));
}
.tm-cat.tm-boing{ animation:tm-boing .75s cubic-bezier(.3,.7,.4,1); }
@keyframes tm-breathe{ 0%,100%{transform:scale(1,1)} 50%{transform:scale(1.012,.988)} }
@keyframes tm-boing{
  0%{transform:scale(1,1)}
  14%{transform:scale(1.14,.82)}
  38%{transform:translateY(-34%) scale(.92,1.1) rotate(-4deg)}
  60%{transform:translateY(0) scale(1.1,.88)}
  78%{transform:scale(.96,1.05)}
  100%{transform:scale(1,1)}
}

/* speech bubble (outside the flip wrapper so text is never mirrored) */
.tm-bubble{
  position:absolute; bottom:calc(100% + 6px); left:50%;
  transform:translateX(calc(-50% + var(--tm-bx,0px))) translateY(6px) scale(.85);
  transform-origin:50% 100%;
  min-width:120px; max-width:230px; width:max-content;
  padding:10px 14px; border-radius:16px;
  background:#fff; color:#1b1f27; font-size:14px; line-height:1.35; font-weight:600;
  box-shadow:0 10px 28px rgba(0,0,0,.35), 0 0 0 2px rgba(255,143,184,.55);
  opacity:0; pointer-events:none; transition:opacity .25s ease, transform .35s cubic-bezier(.3,1.5,.5,1);
  text-align:center; white-space:normal; z-index:3;
}
.tm-bubble::after{
  content:""; position:absolute; top:100%; left:calc(50% - var(--tm-bx,0px)); margin-left:-8px;
  border:8px solid transparent; border-top-color:#fff;
}
.tm-bubble.tm-show{ opacity:1; transform:translateX(calc(-50% + var(--tm-bx,0px))) translateY(0) scale(1); }
@media (max-width:600px){ .tm-bubble{ font-size:12.5px; max-width:180px; min-width:96px; padding:8px 11px; } }

.tm-close{
  position:absolute; top:2%; right:-4%; width:22px; height:22px; border-radius:50%;
  border:0; padding:0; background:rgba(20,24,32,.85); color:#fff; font:700 13px/22px system-ui,sans-serif;
  pointer-events:auto; cursor:pointer; opacity:0; transition:opacity .2s; z-index:2; box-shadow:0 0 0 1px rgba(255,255,255,.25);
}
.tm-root:hover .tm-close, .tm-root:focus-within .tm-close, .tm-root.tm-touch .tm-close{ opacity:.9; }
.tm-close:hover{ opacity:1; background:#e2577f; }

.tm-restore{
  position:fixed; right:14px; bottom:14px; z-index:2147483000; width:44px; height:44px; border-radius:50%;
  border:0; background:#141a22; box-shadow:0 4px 14px rgba(0,0,0,.4),0 0 0 2px rgba(255,143,184,.6);
  font-size:22px; line-height:44px; cursor:pointer; display:none; padding:0;
}
.tm-restore.tm-show{ display:block; }

.tm-fx{ position:fixed; left:0; top:0; z-index:2147483001; pointer-events:none; font-size:20px;
  animation:tm-float 1.2s ease-out both; opacity:0; will-change:transform,opacity; }
@keyframes tm-float{
  0%{ transform:translate(var(--x0),var(--y0)) scale(.4); opacity:0 }
  15%{ opacity:1 }
  100%{ transform:translate(calc(var(--x0) + var(--dx)), calc(var(--y0) - 90px)) scale(1.15) rotate(var(--r)); opacity:0 }
}

@media (prefers-reduced-motion:reduce){
  .tm-breathe,.tm-cat.tm-boing{ animation:none; }
  .tm-bubble,.tm-lean,.tm-flip{ transition:opacity .2s; }
  .tm-fx{ display:none; }
}
