// vk-idle.jsx
// Voight-Kampff idle overlay — fires in SYS.PORTFOLIO after 40s inactivity.
// Separate component, independent of the global IdleOverlay.
// Muthur variant responds to .muthur on <html>.

(function () {
  const { useState, useEffect } = React;

  const VK_IMG = window.__res ? window.__res('vkIdle', 'assets/art/vk-idle.jpg') : 'assets/art/vk-idle.jpg';

  function VKIdleOverlay({ onClose }) {
    const [loop, setLoop]     = useState(0);
    const [fading, setFading] = useState(false);
    const isMuthur = document.documentElement.classList.contains('muthur');

    // ESC closes
    useEffect(() => {
      function onKey(e) {
        if (e.key === 'Escape') { e.preventDefault(); close(); }
      }
      window.addEventListener('keydown', onKey);
      return () => window.removeEventListener('keydown', onKey);
    }, []);

    // Lock body scroll
    useEffect(() => {
      const prev = document.body.style.overflow;
      document.body.style.overflow = 'hidden';
      return () => { document.body.style.overflow = prev; };
    }, []);

    function close() {
      setFading(true);
      setTimeout(onClose, 500);
    }

    function pick1() {
      // Option 1 — good things — fade out, return to gallery
      window.Audio && window.Audio.blip && window.Audio.blip(660);
      close();
    }

    function pick2() {
      // Option 2 — need more time — glitch burst + loop; auto-close after 3
      if (window.crtBurst) window.crtBurst();
      const next = loop + 1;
      setLoop(next);
      if (next >= 3) {
        setTimeout(() => {
          window.Audio && window.Audio.woosh && window.Audio.woosh();
          onClose();
        }, 1100);
      }
    }

    return (
      <div
        className={'vk-idle' + (fading ? ' is-fading' : '') + (isMuthur ? ' is-muthur' : '')}
        aria-modal="true"
        role="dialog"
      >
        {/* Full-bleed background */}
        <img className="vk-idle__bg" src={VK_IMG} alt="" draggable="false" />
        {/* Atmosphere layers */}
        <div className="vk-idle__scanlines"></div>
        <div className="vk-idle__vignette"></div>

        {/* UI card */}
        <div className="vk-idle__ui">
          <div className="vk-idle__header">
            {isMuthur
              ? 'MU/TH/UR 6000 · VOIGHT-KAMPFF PROTOCOL · ACTIVE'
              : 'V-K · CRTW / IDENTYFIKACJA · PROTOKÓŁ AKTYWNY'}
          </div>

          <p className="vk-idle__q">
            "You're in a desert walking along in the sand<br />
            when all of a sudden you look down..."
          </p>

          <div className="vk-idle__opts">
            <div
              className="vk-idle__opt"
              onClick={pick1}
              role="button"
              tabIndex={0}
              onKeyDown={(e) => (e.key === 'Enter' || e.key === ' ') && pick1()}
            >
              <span className="vk-idle__caret">›</span>
              <span>Describe only the good things that come into your mind.</span>
            </div>
            <div
              className="vk-idle__opt"
              onClick={pick2}
              role="button"
              tabIndex={0}
              onKeyDown={(e) => (e.key === 'Enter' || e.key === ' ') && pick2()}
            >
              <span className="vk-idle__caret">›</span>
              <span>I need more time to think about it.</span>
            </div>
          </div>

          <div className="vk-idle__footer">
            {loop > 0 && (
              <span className="vk-idle__loop">LOOP {loop}/3</span>
            )}
            <span className="vk-idle__esc" onClick={close} role="button" tabIndex={0}
                  onKeyDown={(e) => e.key === 'Enter' && close()}>
              [ESC] ABORT
            </span>
          </div>
        </div>
      </div>
    );
  }

  Object.assign(window, { VKIdleOverlay });
})();
