// landing.jsx — sekcja landingowa „Jak to działa?" (pod kalkulatorem)
const { useState: lUseState, useRef: lUseRef, useEffect: lUseEffect } = React;

/* Minimalistyczne ikony kroków (styl Lucide, stroke 1.7) */
const StepIc = {
  calc: (p) => (
    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" {...p} aria-hidden="true">
      <rect x="5" y="3" width="14" height="18" rx="2.5"></rect><path d="M8 7h8M8 11h2M12 11h.01M16 11h.01M8 15h2M12 15h.01M16 15h.01M8 18h2"></path>
    </svg>
  ),
  sliders: (p) => (
    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" {...p} aria-hidden="true">
      <path d="M4 6h10M18 6h2M4 18h2M10 18h10M4 12h6M14 12h6"></path>
      <circle cx="16" cy="6" r="2"></circle><circle cx="8" cy="18" r="2"></circle><circle cx="12" cy="12" r="2"></circle>
    </svg>
  ),
  tag: (p) => (
    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" {...p} aria-hidden="true">
      <path d="M3.5 12.3 11 4.8a2 2 0 0 1 1.4-.6H19a1 1 0 0 1 1 1v6.6a2 2 0 0 1-.6 1.4l-7.5 7.5a2 2 0 0 1-2.8 0l-5.6-5.6a2 2 0 0 1 0-2.8z"></path>
      <circle cx="15.5" cy="8.5" r="1.4"></circle>
    </svg>
  ),
  cart: (p) => (
    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" {...p} aria-hidden="true">
      <path d="M3 4h2l2.2 11.2a1.5 1.5 0 0 0 1.5 1.2h8.3a1.5 1.5 0 0 0 1.5-1.2L21 7H6"></path>
      <circle cx="9" cy="20" r="1.3"></circle><circle cx="18" cy="20" r="1.3"></circle>
    </svg>
  ),
  calendar: (p) => (
    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" {...p} aria-hidden="true">
      <rect x="3.5" y="5" width="17" height="16" rx="2.5"></rect><path d="M3.5 9.5h17M8 3v4M16 3v4M8 14h3M14.5 14h.01M8 17.5h3M14.5 17.5h.01"></path>
    </svg>
  ),
  doc: (p) => (
    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" {...p} aria-hidden="true">
      <path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"></path><path d="M14 3v5h5M9 13h6M9 17h4"></path>
    </svg>
  ),
};

const HOW_STEPS = [
  { t: "Otwórz kalkulator", d: "Kliknij przycisk KALKULATOR lub SKONFIGURUJ SWOJĄ INSTALACJĘ a przekieruje Cię w odpowiednie miejsce.", ic: "calc" },
  { t: "Odbierz instalację dla siebie", d: "Wybierz sprzęt oraz moc instalacji, którą potrzebujesz (panele fotowoltaiczne oraz magazyn energii), falownik dobierze się automatycznie.", ic: "sliders" },
  { t: "Poznaj cenę bez marży handlowca", d: "Zapoznaj się z ceną i wyślij sobie ofertę na maila.", ic: "tag" },
  { t: "Złóż zamówienie", d: "Jeśli potrzebujesz indywidualnej oferty, umów konsultację przez telefon w formularzu kontaktowym.", ic: "cart" },
  { t: "Umów termin montażu", d: "Złóż zamówienie i wybierz opcję podpisania umowy: poprzez Autenti lub spotkanie z opiekunem.", ic: "calendar" },
  { t: "Zleć nam pomoc w złożeniu wniosku o dofinansowanie", d: "Po montażu oraz ewentualnym zgłoszeniu instalacji do zakładu energetycznego, złożymy w Twoim imieniu wniosek o dofinansowanie.", ic: "doc" },
];

/* Karuzela realizacji — nieskończona pętla (lista zdublowana + bezszwowy reset) */
function RealCarousel() {
  const trackRef = lUseRef(null);
  const settleRef = lUseRef(null);
  const N = REALIZACJE.length;

  // Długość jednej pełnej pętli = pozycja pierwszej karty zdublowanego zestawu.
  const loopLen = () => {
    const el = trackRef.current;
    if (!el) return 0;
    const items = el.querySelectorAll(".caro-item");
    return items[N] ? items[N].offsetLeft : el.scrollWidth / 2;
  };

  // Natychmiastowa (nieanimowana) korekta scrollLeft — w CSS jest scroll-behavior: smooth,
  // więc na czas resetu wyłączamy płynność, żeby pętla była bezszwowa.
  const jump = (el, delta) => {
    const prev = el.style.scrollBehavior;
    el.style.scrollBehavior = "auto";
    el.scrollLeft += delta;
    el.style.scrollBehavior = prev;
  };

  // Po ustaniu przewijania normalizujemy pozycję z powrotem do pierwszego zestawu
  // (drugi zestaw jest identyczny, więc skok jest niewidoczny → płynna pętla).
  const onScroll = () => {
    clearTimeout(settleRef.current);
    settleRef.current = setTimeout(() => {
      const el = trackRef.current;
      if (!el) return;
      const L = loopLen();
      if (L <= 0) return;
      if (el.scrollLeft >= L) jump(el, -L);
      else if (el.scrollLeft < 0) jump(el, L);
    }, 130);
  };
  lUseEffect(() => {
    const el = trackRef.current;
    if (!el) return;
    el.addEventListener("scroll", onScroll, { passive: true });
    return () => { el.removeEventListener("scroll", onScroll); clearTimeout(settleRef.current); };
  }, []);

  const step = (dir) => {
    const el = trackRef.current;
    if (!el) return;
    const item = el.querySelector(".caro-item");
    const gap = parseFloat(getComputedStyle(el).gap) || 18;
    const amount = item ? item.getBoundingClientRect().width + gap : 318;
    const L = loopLen();
    // Cofanie z początku → przeskocz na lustrzaną pozycję w drugim zestawie, by płynnie zawinąć.
    if (dir < 0 && L > 0 && el.scrollLeft < amount) jump(el, L);
    el.scrollBy({ left: dir * amount, behavior: "smooth" });
  };

  const loop = [...REALIZACJE, ...REALIZACJE];
  return (
    <div className="carousel">
      <button className="caro-arrow prev" onClick={() => step(-1)} aria-label="Poprzednie realizacje">‹</button>
      <div className="carousel-track" ref={trackRef} tabIndex="0" aria-label="Galeria realizacji — przewiń w bok">
        {loop.map((r, i) => (
          <figure key={`${r.slug}-${i}`} className="caro-item" style={{ margin: 0 }} aria-hidden={i >= N ? "true" : undefined}>
            <div className="caro-photo">
              <picture>
                <source srcSet={`assets/real/${r.slug}.webp`} type="image/webp" />
                <img src={`assets/real/${r.slug}.jpg`} alt={r.city ? `Fotowoltaika ${r.city}` : "Realizacja fotowoltaiczna"}
                     loading="lazy" width="760" height="500"
                     style={{ width: "100%", height: "210px", objectFit: "cover", display: "block" }} />
              </picture>
            </div>
            <span className="caro-power">{r.kwp ? `${r.kwp} kWp` : "PV + magazyn"}</span>
            <figcaption className="caro-city">{r.city || "Instalacja OZE"}</figcaption>
          </figure>
        ))}
      </div>
      <button className="caro-arrow next" onClick={() => step(1)} aria-label="Następne realizacje">›</button>
    </div>
  );
}

function Landing({ go }) {
  const goConfig = () => { go("kalkulator"); setTimeout(() => scrollToId("kalkulator-start"), 60); };
  return (
    <div data-screen-label="Start">
      {/* ── 1. HERO na zdjęciu z gradientem ─────────────────── */}
      <section className="hero" data-screen-label="Hero">
        <div className="hero-overlay"></div>
        <div className="container hero-content">
          <h1 className="hero-title fade-up" style={{ animationDelay: "0.15s" }}>
            Skorzystaj z oferty <span className="hl">wprost od instalatora</span><br className="d-only" />
            nie przepłacając za dodatkową usługę handlowca.
          </h1>
          <div className="hero-cta fade-up" style={{ animationDelay: "0.3s" }}>
            <button className="btn btn-amber btn-lg" onClick={goConfig}>Skonfiguruj instalację</button>
            <button className="btn btn-hero-ghost btn-lg" onClick={() => go("realizacje")}>Zobacz realizacje</button>
          </div>
        </div>
      </section>

      {/* ── 2. NASZE REALIZACJE (karuzela) ──────────────────── */}
      <section className="section">
        <div className="container">
          <Reveal style={{ display: "flex", alignItems: "flex-end", justifyContent: "space-between", gap: 16, flexWrap: "wrap", marginBottom: 28 }}>
            <div>
              <div className="eyebrow">Zaufały nam setki domów</div>
              <h2 className="h-lg">Nasze realizacje</h2>
            </div>
            <button className="btn btn-secondary" onClick={() => go("realizacje")}>Wszystkie realizacje <Ic.ArrowR /></button>
          </Reveal>
          <Reveal><RealCarousel /></Reveal>
        </div>
      </section>

      {/* ── 2b. DLACZEGO WARTO — Standard vs Premium ────────── */}
      <section className="section compare-section" id="standard-premium">
        <div className="container">
          <Reveal style={{ textAlign: "center", marginBottom: 36, maxWidth: 640, marginLeft: "auto", marginRight: "auto" }}>
            <div className="eyebrow">Nasz sprzęt</div>
            <h2 className="h-lg">Maksimum wydajności i inteligencji</h2>
            <p style={{ color: "var(--muted)", marginTop: 12 }}>
              Stawiamy na najwydajniejsze panele Aiko i inteligentny system Sigenergy — sprzęt,
              który realnie zwiększa Twoje oszczędności i jest gotowy na przyszłość.
            </p>
          </Reveal>
          <div className="compare-grid">
            <Reveal className="compare-card">
              <div className="compare-head">
                <span className="tier-badge">Panele</span>
                <h3>Dlaczego panele Aiko?</h3>
              </div>
              <ul className="compare-list">
                <li><Ic.Check size={16} /> Więcej energii z tej samej powierzchni dachu</li>
                <li><Ic.Check size={16} /> Mniejsze straty przy częściowym zacienieniu</li>
                <li><Ic.Check size={16} /> Wolniejsza utrata wydajności paneli</li>
              </ul>
            </Reveal>
            <Reveal className="compare-card premium" style={{ transitionDelay: "90ms" }}>
              <span className="compare-ribbon"><Ic.Star size={12} /> Polecane</span>
              <div className="compare-head">
                <span className="tier-badge premium"><Ic.Star size={12} /> System</span>
                <h3>Dlaczego system Sigenergy?</h3>
              </div>
              <ul className="compare-list">
                <li><Ic.Check size={16} /> <strong>Obsługa taryf dynamicznych!</strong></li>
                <li><Ic.Check size={16} /> <strong>Integracja z Pstryk i obsługa cen ujemnych</strong></li>
                <li>
                  <Ic.Check size={16} /> <span style={{ flex: 1 }}>System 5 w 1</span>
                  <ul className="compare-sublist">
                    <li>falownik hybrydowy,</li>
                    <li>magazyn energii,</li>
                    <li>zasilanie awaryjne,</li>
                    <li>inteligentne zarządzanie energią,</li>
                    <li>opcjonalną ładowarkę samochodu elektrycznego.</li>
                  </ul>
                </li>
                <li><Ic.Check size={16} /> Łatwa rozbudowa magazynu energii</li>
                <li><Ic.Check size={16} /> Bardzo dobre wykorzystanie pojemności baterii do 100%</li>
                <li><Ic.Check size={16} /> Inteligentne zarządzanie energią</li>
                <li><Ic.Check size={16} /> Przygotowanie pod samochód elektryczny i V2H</li>
                <li><Ic.Check size={16} /> Estetyka całego zestawu</li>
              </ul>
            </Reveal>
          </div>
          <Reveal style={{ textAlign: "center", marginTop: 32 }}>
            <button className="btn btn-primary btn-lg" onClick={goConfig}>Przejdź do kalkulatora →</button>
          </Reveal>
        </div>
      </section>

      {/* ── 2c. AUTORYZOWANY INSTALATOR SIGENERGY ───────────── */}
      <section className="section-tight">
        <div className="container">
          <Reveal className="authorized-band">
            <picture>
              <img src="assets/sigenergy-logo.png" alt="Sigenergy" className="authorized-logo"
                   loading="lazy" decoding="async" />
            </picture>
            <div className="authorized-copy">
              <span className="authorized-badge"><Ic.Check size={14} /> Autoryzowany instalator</span>
              <h3>Jesteśmy autoryzowanym instalatorem Sigenergy</h3>
              <p>
                Montujemy i konfigurujemy systemy Sigenergy w oparciu o szkolenia i certyfikację producenta —
                masz pewność prawidłowego montażu oraz pełnej gwarancji.
              </p>
            </div>
          </Reveal>
        </div>
      </section>

      {/* ── 3. JAK TO DZIAŁA (czyste tło, grid 3×2, znaki wodne) ── */}
      <section className="section how-section">
        <div className="container">
          <Reveal style={{ textAlign: "center", marginBottom: 40 }}>
            <div className="eyebrow">Prosty proces</div>
            <h2 className="h-xl">Jak to działa?</h2>
            <p style={{ color: "rgba(255,255,255,0.88)", maxWidth: 560, margin: "10px auto 0" }}>
              Od otwarcia kalkulatora po montaż i dofinansowanie — prowadzimy Cię za rękę na każdym kroku.
            </p>
          </Reveal>
          <div className="how-grid">
            {HOW_STEPS.map((s, i) => {
              const Icon = StepIc[s.ic];
              return (
                <Reveal key={i} className="how-card" style={{ transitionDelay: `${(i % 3) * 80}ms` }}>
                  <span className="how-watermark" aria-hidden="true">{i + 1}</span>
                  <span className="how-icon"><Icon /></span>
                  <h3>{s.t}</h3>
                  <p>{s.d}</p>
                </Reveal>
              );
            })}
          </div>
        </div>
      </section>

      {/* ── 4. CTA — pełnoekranowy banner z glow ────────────── */}
      <section className="cta-banner">
        <div className="container cta-banner-inner">
          <Reveal>
            <div className="eyebrow" style={{ color: "var(--amber)" }}>Gotowy na oszczędności?</div>
            <h2 className="cta-banner-title">Poznaj cenę swojej instalacji w mniej niż 2 minuty.</h2>
            <p className="cta-banner-sub">Bez rejestracji, bez zobowiązań, bez marży handlowca.</p>
            <button className="btn btn-amber btn-lg cta-glow" onClick={goConfig}>Skonfiguruj swoją instalację</button>
          </Reveal>
        </div>
      </section>

      {/* ── 5. NIE WIESZ JAK + KONSULTACJA (split 50/50) ────── */}
      <section className="section" id="konsultacja">
        <div className="container split-2">
          <Reveal style={{ display: "flex", flexDirection: "column", gap: 20, justifyContent: "center" }}>
            <div>
              <div className="eyebrow">Pomożemy dobrać instalację</div>
              <h2 className="h-lg">Nie wiesz jak?</h2>
              <p style={{ color: "var(--muted)", marginTop: 12 }}>
                Jeśli nie wiesz jak skonfigurować swoją instalację OZE lub nie wiesz czego
                potrzebujesz, wypełnij formularz kontaktowy a skontaktujemy się z Tobą i
                dobierzemy instalację skrojoną pod Twoje zapotrzebowanie.
              </p>
            </div>
            <picture>
              <source srcSet="assets/nie-wiesz-jak.webp" type="image/webp" />
              <img src="assets/nie-wiesz-jak.png" alt="Dom jednorodzinny z instalacją fotowoltaiczną na dachu"
                   loading="lazy" decoding="async" width="1100" height="752"
                   style={{ width: "100%", height: "auto", display: "block" }} />
            </picture>
          </Reveal>
          <Reveal>
            <LeadForm title="Umów konsultację" pvRadio submitLabel="WYŚLIJ" context={{ typ: "konsultacja" }} />
          </Reveal>
        </div>
      </section>
    </div>
  );
}

Object.assign(window, { Landing, HOW_STEPS, StepIc });
