/* Scanner-page-only helpers: click-to-copy affordance + copy toast +
   process gating hint / photo-binding line (wired in scanner.js).
   Extracted from an inline <style> in scanner.html so the browser/CDN can
   cache it across visits instead of re-parsing it inside no-cache HTML. */
.pi-copy, .pd-copy { cursor: copy; }
.pi-copy:hover, .pd-copy:hover { text-decoration: underline dotted; text-underline-offset: 3px; }
.copy-toast {
    position: fixed; bottom: 24px; left: 50%;
    transform: translateX(-50%) translateY(8px);
    color: #fff; padding: 0.5rem 0.9rem; border-radius: 8px;
    font-size: 0.8rem; z-index: 10001;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
    max-width: 80vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    pointer-events: none; opacity: 0;
    transition: opacity 0.15s ease, transform 0.15s ease;
}
.copy-toast.copy-toast-visible { opacity: 1; transform: translateX(-50%) translateY(0); }
.photo-binding-line { font-size: 0.78rem; color: #10b981; margin-top: 0.55rem; line-height: 1.45; }
.process-gate-hint { font-size: 0.78rem; color: #f59e0b; margin-top: 0.5rem; line-height: 1.45; }
.scanner-broken-check {
    display: flex; align-items: center; gap: 0.5rem;
    font-size: 0.85rem; color: #f87171; margin-top: 0.75rem;
    cursor: pointer; user-select: none;
}
.scanner-broken-check input { width: 16px; height: 16px; accent-color: #ef4444; cursor: pointer; }
