/* Quiet, finite UI motion. The homepage hand responds separately to pointer/scroll input. */
:root { --motion-ease: cubic-bezier(.22,1,.36,1); }
@media (prefers-reduced-motion: no-preference) {
    .button, .icon-link { transition: background-color 180ms ease, color 180ms ease, transform 220ms var(--motion-ease); }
    .button img, .text-link img { transition: transform 260ms var(--motion-ease); }
    .primary-nav a { position: relative; }
    .primary-nav a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 8px; height: 1px; background: var(--teal); transform: scaleX(0); transform-origin: left; transition: transform 260ms var(--motion-ease); }
    .primary-nav a:is(:hover,:focus-visible)::after { transform: scaleX(1); }
    .languages a, .article-toc a { transition: color 180ms ease, border-color 180ms ease; }
    .category-tab { transition: border-color 220ms ease, background-color 220ms ease, transform 260ms var(--motion-ease); }
    .category-tab::after { transition: transform 360ms var(--motion-ease); }
    .category-tab-meta img { transition: opacity 180ms ease, transform 260ms var(--motion-ease); }
    .category-tab-image img { transition: transform 450ms var(--motion-ease); }
    input, select, textarea { transition: border-color 180ms ease, background-color 180ms ease; }
    input:focus, select:focus, textarea:focus { border-color: var(--teal); background-color: #fff; }
    .product-card-image > img, .journal-image > img { transition: transform 650ms var(--motion-ease); }
    .collection-texture { transition: filter 450ms ease; }
    .menu-toggle img { transition: opacity 180ms ease; }
    .menu-toggle[aria-expanded=true] img { opacity: .6; }
    .button:not(:disabled):active, .icon-link:active { transform: translateY(1px); }
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
    .product-card { position: relative; transition: scale 300ms var(--motion-ease); }
    .product-card:is(:hover,:focus-visible) { scale: 1.04; z-index: 1; }
    .button:not(:disabled):hover { transform: translateY(-2px); }
    .button:not(:disabled):hover img, .text-link:hover img { transform: translateX(4px); }
    .icon-link:hover { transform: translateY(-2px); }
    .category-tab:not(.active):hover { transform: translateY(-2px); }
    .category-tab:not(.active):hover::after { transform: scaleX(.35); }
    .category-tab:not(.active):hover .category-tab-meta img { transform: translateX(4px); }
    .category-tab:hover .category-tab-image img { transform: scale(1.06); }
    .product-card:hover .product-card-image > img, .journal-card:hover .journal-image > img { transform: scale(1.025); }
}
@media (prefers-reduced-motion: reduce) {
    .product-card { scale: none !important; }
    *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
    .product-card:hover .product-card-image > img, .journal-card:hover .journal-image > img,
    .button, .icon-link, .button img, .text-link img, .menu-toggle img { transform: none !important; }
}
@media print {
    *, *::before, *::after { animation: none !important; transition: none !important; }
}
