/* Storefront home — Intro marque (RAFFINÉ par Fable / Claude Design — depuis le seed sobre).
   Élévation « geek-romantic » chaleureuse : rythme, hiérarchie, motion, icônes tracées main.
   Faits = source unique brand-facts.json — INCHANGÉS ; chaque atome garde son data-fact-key.
   Tokens DS uniquement. ⚠️ Le seed pointait --mg-honey / --mg-honey-soft (TOKENS FANTÔMES,
   non définis → accents invisibles) : corrigés vers l'échelle réelle --mg-yellow / -70 / -30.
   Zéro dépendance externe. CSS limité à .bi-*. window.BrandIntro. */
function BrandIntro() {
  const { useRef, useEffect } = React;

  // 4 piliers de force — titres + phrases STRICTEMENT identiques à brand-facts.json.
  const PILLARS = [
    {
      k: "pillar-magnetic", n: "01", t: "Performance magnétique",
      d: "N°1 mondial du magnétique — 0,125 ms, le déclenchement le plus rapide qui existe. Centauri & MADE68 Hall Effect.",
      icon: (
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M6 3H3v8a9 9 0 0 0 18 0V3h-3" />
          <path d="M6 3v8a6 6 0 0 0 12 0V3" />
          <path d="M3 7h3M18 7h3" />
        </svg>
      ),
    },
    {
      k: "pillar-design", n: "02", t: "Design & créativité",
      d: "Transparents (MOJO68), compatibles briques (Pixel), collaborations officielles sous licence (Evangelion).",
      icon: (
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <rect x="3.5" y="3.5" width="11" height="11" rx="1.4" />
          <rect x="9.5" y="9.5" width="11" height="11" rx="1.4" />
        </svg>
      ),
    },
    {
      k: "pillar-ecosystem", n: "03", t: "Écosystème complet",
      d: "Keycaps (MDA / Big Bang), logiciel Hive, souris Horus, lightbox — pas que des claviers.",
      icon: (
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <circle cx="12" cy="12" r="3.1" />
          <circle cx="12" cy="4" r="1.6" /><circle cx="12" cy="20" r="1.6" />
          <circle cx="4" cy="12" r="1.6" /><circle cx="20" cy="12" r="1.6" />
          <path d="M12 8.9V5.6M12 18.4v-3.3M8.9 12H5.6M18.4 12h-3.3" />
        </svg>
      ),
    },
    {
      k: "pillar-community", n: "04", t: "Communauté & e-sport",
      d: "Entièrement financé sur Kickstarter, communauté Discord / Reddit, équipes Valorant (FPX · DRG).",
      icon: (
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <circle cx="9" cy="8" r="3.1" />
          <path d="M3 20a6 6 0 0 1 12 0" />
          <path d="M16 5.5a3 3 0 0 1 0 5.4" />
          <path d="M15.2 14.2A6 6 0 0 1 21 20" />
        </svg>
      ),
    },
  ];

  // (Bande de cautions retirée — redondante avec le module Presse au-dessus. Feedback Tian 2026-07-04.)

  const rootRef = useRef(null);
  useEffect(() => {
    const root = rootRef.current;
    if (!root) return;
    const items = root.querySelectorAll(".bi-reveal");
    const reduce = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
    if (reduce || !("IntersectionObserver" in window)) {
      items.forEach((el) => el.classList.add("is-in"));
      return;
    }
    const io = new IntersectionObserver(
      (entries) => {
        entries.forEach((e) => {
          if (e.isIntersecting) { e.target.classList.add("is-in"); io.unobserve(e.target); }
        });
      },
      { threshold: 0.16, rootMargin: "0px 0px -8% 0px" }
    );
    items.forEach((el) => io.observe(el));
    return () => io.disconnect();
  }, []);

  return (
    <section className="bi" ref={rootRef} aria-labelledby="bi-title">
      <style>{`
        .bi{position:relative;overflow:hidden;background:var(--mg-bg);color:var(--mg-fg);border-top:1px solid var(--mg-border)}
        .bi-glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(64% 42% at 50% 0%,var(--mg-kb-glow),transparent 60%)}
        .bi-tex{position:absolute;inset:0;pointer-events:none;opacity:.5;-webkit-mask-image:linear-gradient(180deg,#000,transparent 78%);mask-image:linear-gradient(180deg,#000,transparent 78%)}
        .bi-in{position:relative;max-width:var(--mg-maxw);margin:0 auto;padding:clamp(56px,7vw,96px) var(--mg-gutter)}

        .bi-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--mg-space-4);max-width:60ch;margin:0 auto}
        .bi-eyebrow{font-family:var(--mg-font-mono);font-weight:500;font-size:var(--mg-step--2);letter-spacing:var(--mg-track-wide);color:var(--mg-kb-accent)}
        .bi-title{margin:0;font-family:var(--mg-font-display);font-weight:900;font-size:clamp(2rem,4.8vw,3.4rem);line-height:1.03;letter-spacing:var(--mg-track-display);text-wrap:balance}
        .bi-x{color:var(--mg-kb-accent);font-style:normal;padding:0 .06em;text-shadow:0 0 26px var(--mg-kb-glow)}
        .bi-lede{margin:0;font-size:var(--mg-step-1);line-height:1.55;color:var(--mg-fg-muted);max-width:52ch;text-wrap:pretty}
        .bi-philo{display:inline-flex;align-items:center;gap:.6em;margin-top:var(--mg-space-1);padding:8px 16px;border:none;border-radius:var(--mg-radius-pill);background:var(--mg-btn-glass-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:inset 0 1px 0 rgba(255,255,255,0.20)}
        .bi-philo b{font-family:var(--mg-font-mono);font-weight:600;font-size:var(--mg-step--1);letter-spacing:.02em;color:var(--mg-kb-accent)}
        .bi-philo i{width:5px;height:5px;border-radius:50%;background:var(--mg-kb-accent);box-shadow:0 0 8px var(--mg-kb-glow);flex:none}

        .bi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.6vw,20px);margin-top:clamp(36px,4.4vw,60px)}
        .bi-card{position:relative;overflow:hidden;isolation:isolate;border:1px solid var(--mg-border);background:var(--mg-surface);border-radius:var(--mg-radius-4);padding:22px 20px 20px;display:flex;flex-direction:column;gap:14px;transition:border-color var(--mg-dur-2) var(--mg-ease),transform var(--mg-dur-2) var(--mg-ease),background var(--mg-dur-2) var(--mg-ease)}
        .bi-card::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;background:radial-gradient(120% 90% at 50% -10%,var(--mg-kb-glow),transparent 60%);transition:opacity var(--mg-dur-2) var(--mg-ease)}
        .bi-card:hover{transform:translateY(-4px);border-color:var(--mg-kb-accent);background:var(--mg-surface-2)}
        .bi-card:hover::before{opacity:1}
        .bi-no{position:absolute;top:12px;right:16px;font-family:var(--mg-font-display);font-weight:700;font-size:2.4rem;line-height:1;color:var(--mg-kb-tint);letter-spacing:-.03em;pointer-events:none;transition:color var(--mg-dur-2) var(--mg-ease)}
        .bi-no::before{content:attr(data-n)}
        .bi-card:hover .bi-no{color:var(--mg-kb-tint)}
        .bi-ic{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--mg-border);border-radius:var(--mg-radius-3);color:var(--mg-kb-accent);background:var(--mg-kb-tint)}
        .bi-ic svg{width:23px;height:23px}
        .bi-t{margin:0;font-family:var(--mg-font-display);font-weight:600;font-size:var(--mg-step-2);line-height:1.1;letter-spacing:var(--mg-track-tight);color:var(--mg-fg)}
        .bi-d{margin:0;font-family:var(--mg-font-mono);font-size:var(--mg-step--2);line-height:1.55;color:var(--mg-fg-muted);text-wrap:pretty}

        .bi-reveal{opacity:0;transform:translateY(18px);transition:opacity .62s var(--mg-ease),transform .62s var(--mg-ease);transition-delay:calc(var(--i,0) * 70ms)}
        .bi-reveal.is-in{opacity:1;transform:none}

        @media (max-width:900px){.bi-grid{grid-template-columns:repeat(2,1fr)}}
        @media (max-width:560px){
          .bi-grid{grid-template-columns:1fr}
        }
        @media (prefers-reduced-motion:reduce){
          .bi-reveal{opacity:1;transform:none;transition:none}
          .bi-card,.bi-no,.bi-card::before{transition:none}
        }
      `}</style>

      <div className="bi-glow" aria-hidden="true"></div>
      <div className="bi-tex mg-honeycomb" aria-hidden="true"></div>

      <div className="bi-in">
        <div className="bi-head">
          <span className="bi-eyebrow bi-reveal" style={{ "--i": 0 }} data-fact-key="eyebrow">〔 La marque 〕</span>
          <h2 className="bi-title bi-reveal mg-grad-text" id="bi-title" style={{ "--i": 1 }} data-fact-key="positioning-title">
            L'esthétique de l'intuition <span className="bi-x">×</span> la précision infinie
          </h2>
          <p className="bi-lede bi-reveal" style={{ "--i": 2 }} data-fact-key="positioning-lede">
            MelGeek — Mel, le cœur miel (l'intuition chaleureuse) ; Geek, le cerveau (la précision). Claviers mécaniques personnalisables haut de gamme et écosystème de périphériques, fièrement fabriqué à Shenzhen, 2014.
          </p>
          <span className="bi-philo bi-reveal" style={{ "--i": 3 }}>
            <i aria-hidden="true"></i>
            <b data-fact-key="philosophy">Play for Fun, Not to Win.</b>
            <i aria-hidden="true"></i>
          </span>
        </div>

        <div className="bi-grid" role="list">
          {PILLARS.map((p, idx) => (
            <article className="bi-card bi-reveal" role="listitem" data-fact-key={p.k} key={p.k} style={{ "--i": idx + 2 }}>
              <span className="bi-no" data-n={p.n} aria-hidden="true"></span>
              <span className="bi-ic">{p.icon}</span>
              <h3 className="bi-t">{p.t}</h3>
              <p className="bi-d">{p.d}</p>
            </article>
          ))}
        </div>

      </div>
    </section>
  );
}
window.BrandIntro = BrandIntro;
