.batch-item{background:var(--background);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;text-align:center;transition:var(--transition);position:relative}.batch-item:hover{transform:translateY(-3px);box-shadow:0 4px 8px var(--shadow)}.batch-emoji{font-size:2rem;margin-bottom:.5rem}.batch-name{font-size:.75rem;color:var(--text-light);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-copy{position:absolute;top:.5rem;right:.5rem;background:var(--primary);color:white;border:none;border-radius:50%;width:1.5rem;height:1.5rem;font-size:.75rem;cursor:pointer;opacity:0;transition:var(--transition)}.batch-item:hover .batch-copy{opacity:1}.history-item{flex-shrink:0;width:3rem;height:3rem;background:var(--surface);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:1.5rem;cursor:pointer;transition:var(--transition);position:relative}.history-item:hover{transform:scale(1.1)}.history-item .pin{position:absolute;top:-.25rem;right:-.25rem;background:var(--secondary);color:white;border-radius:50%;width:1rem;height:1rem;font-size:.5rem;display:flex;align-items:center;justify-content:center}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.toast.show{opacity:1}.spinner{display:inline-block;width:1rem;height:1rem;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:white;animation:spin 1s ease-in-out infinite}.confetti{position:fixed;width:10px;height:10px;z-index:9999;border-radius:50%}.listen-btn.playing{animation:pulse 1s infinite}