/* Small, nonessential accents. Reading never depends on animation. */
.button span { display: inline-block; transition: transform 220ms ease; }
.exam-grid article { transition: transform 260ms ease, box-shadow 260ms ease; }
.text-link, .map-link { transition: border-color 220ms ease; }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .button:hover span { transform: translate(2px, -2px); }
  .exam-grid article:hover { transform: translateY(-4px); box-shadow: 0 12px 26px #2f555712; }
  .text-link:hover, .map-link:hover { border-color: currentColor; }
}
@media (prefers-reduced-motion: no-preference) {
  details[open] > p, details[open] > ul { animation: answer-in 240ms ease-out; }
  @keyframes answer-in { from { opacity: .45; transform: translateY(-3px); } to { opacity: 1; transform: none; } }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .button:hover, .exam-grid article:hover { transform: none; }
}
@media print {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
