/* ═══════════════════════════════════════════════════════════════════════════
   UI FIX ENGINE · ui-fix.css — breathing room + smooth restack motion
   Works with ui-fix.js; never overrides colours, themes or component skins.
   ═══════════════════════════════════════════════════════════════════════════ */
:root { --uifx-gap: 16px; }

/* repositioned controls land in layout instantly (collision truly resolved
   even mid-jank); the visible glide is a compositor transform transition */
.uifx-managed { transition: transform .35s cubic-bezier(.2,.8,.2,1); }

/* generic breathing room for common floating controls (theme-agnostic) */
@media (min-width: 769px) {
  .gx-top, .mx-sound, .ai-trigger, .mcd-totop,
  [data-float-control] {
    margin: calc(var(--uifx-gap) / 2);
  }
}
@media (max-width: 768px) {
  .gx-top, .ai-trigger, [data-float-control] {
    margin: 0;                                   /* engine + safe-area own mobile spacing */
  }
}

/* comfortable hit targets on touch without changing visual size */
@media (pointer: coarse) {
  .uifx-managed::after,
  [data-float-control]::after {
    content: ""; position: absolute; inset: -6px; border-radius: inherit;
  }
}

@media (prefers-reduced-motion: reduce) {
  .uifx-managed { transition: none; }
}
