@layer app-components{body:has(.practice-history-archive,.assessment-listening,.assessment-speaking,.assessment-fixed,.reading-quiz,.reading-summary,.sa-result,.sa-groups) .floating-pami{display:none}.floating-pami{z-index:45;pointer-events:none;contain:layout;will-change:transform;width:104px;height:156px;position:fixed;top:0;left:0}.floating-pami-drag{cursor:grab;touch-action:none;pointer-events:auto;background:0 0;border:0;border-radius:28px;width:104px;height:104px;padding:0;display:block}.floating-pami-drag .pami{pointer-events:none;width:104px}.floating-pami.dragging .floating-pami-drag{cursor:grabbing}.floating-pami-options{min-width:44px;min-height:44px;color:var(--accent);pointer-events:auto;background:0 0;border:0;border-radius:10px;place-items:center;display:grid;position:absolute;bottom:0;right:30px}.floating-pami-message{border:2px solid var(--line-strong);box-shadow:var(--shadow);background:var(--surface);color:var(--foreground);pointer-events:none;white-space:normal;overflow-wrap:anywhere;border-radius:18px 18px 4px;width:min(280px,100vw - 24px);padding:12px 15px;font-size:14px;line-height:1.65;position:absolute;bottom:100%;right:0}.floating-pami-message.align-left{left:0;right:auto}.floating-pami-menu{background:var(--surface);border:2px solid var(--line-strong);width:210px;box-shadow:var(--shadow);pointer-events:auto;border-radius:16px;max-height:calc(100dvh - 32px);padding:8px;position:absolute;bottom:0;right:0;overflow-y:auto}.floating-pami-menu button{width:100%;min-height:44px;color:var(--accent);border-radius:10px;align-items:center;gap:8px;padding:8px;font-size:14px;display:flex}.floating-pami-menu button:hover{background:var(--panel)}.floating-pami[data-mood=hover]:not(.dragging) .pami-sprite{animation:.65s ease-out both pami-tap-wave}.floating-pami-message.below{margin-top:8px;top:100%;bottom:auto}.pami-sound-status{border-top:1px solid var(--line);color:var(--muted);margin-top:8px;padding-top:6px;font-size:12px;display:block}.floating-pami[data-mood=love]:not(.dragging) .pami-sprite{animation:.55s ease-out both pami-tap-hop}.floating-pami[data-mood=thinking]:not(.dragging) .pami-sprite{animation:.7s ease-in-out both pami-tap-tilt}.floating-pami[data-mood=listening]:not(.dragging) .pami-sprite{animation:.75s ease-in-out both pami-tap-listen}.floating-pami[data-mood=complete]:not(.dragging) .pami-sprite{animation:.8s ease-out both pami-tap-cheer}.floating-pami[data-mood=reminder]:not(.dragging) .pami-sprite{animation:.8s ease-in-out both pami-tap-stretch}.floating-pami.dragging .pami-sprite{animation:none}@keyframes pami-tap-wave{0%,to{transform:rotate(0)}25%{transform:rotate(-9deg)}65%{transform:rotate(9deg)}}@keyframes pami-tap-hop{0%,to{transform:translateY(0)}40%{transform:translateY(-12px)rotate(-5deg)}75%{transform:translateY(-4px)}}@keyframes pami-tap-tilt{0%,to{transform:rotate(0)}50%{transform:rotate(12deg)translate(3px)}}@keyframes pami-tap-listen{0%,to{transform:rotate(0)}35%{transform:rotate(-12deg)}70%{transform:rotate(-5deg)translateY(-4px)}}@keyframes pami-tap-cheer{0%,to{transform:translateY(0)scale(1)}30%{transform:translateY(-14px)scale(1.06)}65%{transform:translateY(-6px)rotate(8deg)}}@keyframes pami-tap-stretch{0%,to{transform:scale(1)}50%{transform:scale(.95,1.06)translateY(-5px)}}.floating-pami-menu.align-left{left:0;right:auto}.floating-pami-menu.below{top:100%;bottom:auto}}@layer app-states{@media (prefers-reduced-motion:reduce){.floating-pami .pami-sprite{animation:none}}:root[data-motion=reduced] .floating-pami .pami-sprite{animation:none}}
