
  /* Public article: text is immediately readable. Motion belongs to diagrams, not paragraphs. */
  .js .reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  /* Illustrations may still enter subtly when their section reaches the viewport. */
  .js .problem.has-visual .problem-visual {
    opacity: 0 !important;
    transform: translateY(16px) !important;
    transition: opacity .55s ease, transform .65s cubic-bezier(.2,.7,.2,1) !important;
  }
  .js .problem.has-visual.visible .problem-visual {
    opacity: 1 !important;
    transform: none !important;
  }

  /* The long act transition remains the only large-area fade. */
  .js .act-gradient-wash.reveal {
    opacity: 0 !important;
    transition: opacity .9s ease !important;
  }
  .js .act-gradient-wash.reveal.visible { opacity: 1 !important; }

  /* One editorial rule on wide screens: copy on the left, illustration on the right. */
  @media (min-width: 1081px) {
    .problem.has-visual,
    body.toc-collapsed .problem.has-visual {
      display: grid !important;
      grid-template-columns: minmax(0, var(--prose)) minmax(360px, var(--visual)) !important;
      column-gap: var(--main-gap) !important;
      align-items: start !important;
      direction: ltr !important;
    }
    .problem.has-visual::before,
    body.toc-collapsed .problem.has-visual::before {
      grid-column: 1 / -1 !important;
    }
    .problem.has-visual > :not(.problem-visual),
    body.toc-collapsed .problem.has-visual > :not(.problem-visual) {
      grid-column: 1 !important;
      direction: ltr !important;
    }
    .problem.has-visual > .problem-visual,
    body.toc-collapsed .problem.has-visual > .problem-visual {
      grid-column: 2 !important;
      grid-row: 2 / span 100 !important;
      justify-self: stretch !important;
      margin-left: 0 !important;
      margin-right: 0 !important;
      direction: ltr !important;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .js .problem.has-visual .problem-visual,
    .js .act-gradient-wash.reveal {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
    }
  }
