b64ce0f832
Problem: Switching slides reset iframe.src each time, causing visible flicker (white flash → load → render) on every navigation. Solution: load each preview iframe ONCE, then use postMessage for all subsequent slide changes. The iframe stays mounted; only .is-active class toggles between slides inside it. Changes: - runtime.js preview mode: now exposes a showSlide() function and listens for window.message events of type 'preview-goto'. Also posts 'preview-ready' to parent on init so the presenter window knows when each iframe is loaded. - presenter window: tracks iframeReady state per iframe; first frame renders via iframe.src = ?preview=N (one-time), all subsequent navigation goes through postPreviewGoto() → postMessage. Notes, meta, and timer update directly without touching iframes. - Init no longer calls update(idx) which used to reset iframe.src; instead inits notes/meta/count once and lets the load→ready flow populate previews. Docs synced to match new architecture: - SKILL.md: describes 4 magnetic cards, draggable/resizable, with the iframe ?preview=N pattern explained for AI consumers - references/presenter-mode.md: updated ASCII diagram to show 4 cards, removed old 58%/35% layout description, added explanation for why previews are pixel-perfect (iframe loads same HTML) and why navigation is flicker-free (postMessage, not reload) - presenter-mode-reveal README: updated 4-card description