label=r'$t_\oplus = C\,r_{\rm moon}$')
ax1.axhline(1.0, color='gray', ls=':', lw=1.2)
ax1.axvline(r_now * lt_s, color='green', ls='--', lw=1.6,
label=f'Present ({r_now*lt_s:.3f} lt-s)')
ax1.axvline(r_req * lt_s, color='red', ls='--', lw=1.6,
label=f'Required ({r_req*lt_s:.3f} lt-s)')
ax1.plot(r_now * lt_s, t_earth(r_now), 'go', ms=10, zorder=5)
ax1.plot(r_req * lt_s, 1.0, 'ro', ms=10, zorder=5)
ax1.axvspan(r_now * lt_s, r_req * lt_s, color='red', alpha=0.15)
ax1.annotate(f'Gap: {(r_req-r_now)/r_req*100:.1f}%',
xy=((r_now+r_req)/2 * lt_s, 0.94),
ha='center', fontsize=11, fontweight='bold', color='darkred')
ax1.set_xlabel(r'$r_{\rm moon}$ (light-seconds)', fontsize=12)
ax1.set_ylabel(r'$t_\oplus$ (s)', fontsize=12)
ax1.set_title('(A) Zoom on $t_\\oplus \\approx 1$ s', fontsize=12)
ax1.legend(fontsize=9, loc='upper left')
ax1.grid(alpha=0.3)
# === Panel B: full range, log-log ===
r_full = np.logspace(np.log10(0.05 * c), np.log10(3.0 * c), 500)
ax2.loglog(r_full * lt_s, t_earth(r_full), 'b-', lw=2.4,
label=r'$t_\oplus = C\,r_{\rm moon}$')
ax2.axhline(1.0, color='gray', ls=':', lw=1.2, label=r'$t_\oplus = 1$ s')
# Key markers
ax2.plot(r_formation * lt_s, t_earth(r_formation), 's',
color='saddlebrown', ms=10, zorder=5, label='Formation (est.)')
ax2.plot(r_now * lt_s, t_earth(r_now), 'go', ms=10, zorder=5,
label='Present')
ax2.plot(r_req * lt_s, 1.0, 'ro', ms=10, zorder=5,
label='Required for 1 s')
ax2.plot(r_future * lt_s, t_earth(r_future), '^',
color='purple', ms=10, zorder=5, label='Far future')
ax2.set_xlabel(r'$r_{\rm moon}$ (light-seconds)', fontsize=12)
ax2.set_ylabel(r'$t_\oplus$ (s)', fontsize=12)
ax2.set_title('(B) Full range: formation to far future', fontsize=12)
ax2.legend(fontsize=9, loc='upper left')
ax2.grid(alpha=0.3, which='both')
# === Panel C: geological timeline, log r ===
t_arr = np.linspace(-1.5, 2.0, 500)
r_arr = r_of_t(t_arr)
ax3.plot(t_arr, r_arr * lt_s, 'b-', lw=2.4,