// Sections shared/specialized across variations

// ---------------- LOGO STRIP ----------------
const LogoStrip = ({mode = "light"}) => {
  const dark = mode === "dark";
  return (
    <section id="clients" style={{padding:"40px 32px", background: dark ? "var(--navy-900)" : "var(--paper)", borderTop: dark ? "1px solid rgba(159,180,219,.08)" : "1px solid var(--border-1)", borderBottom: dark ? "1px solid rgba(159,180,219,.08)" : "1px solid var(--border-1)"}}>
      <div className="lq-container lq-logo-strip-grid" style={{display:"grid",gridTemplateColumns:"220px 1fr",gap:40,alignItems:"center"}}>
        <div>
          <Eyebrow style={dark ? {color:"var(--signal-400)"} : {}}>trusted by teams at</Eyebrow>
        </div>
        <div className="lq-logo-strip-marks" style={{display:"flex",gap:40,flexWrap:"wrap",alignItems:"center",justifyContent:"space-between"}}>
          {CLIENTS.map(n => <ClientMark key={n} name={n} inverse={dark}/>)}
        </div>
      </div>
    </section>
  );
};

// ---------------- NETWORK / LOCATIONS ----------------
const NETWORK_NODES = [
  { label: "AI Training &\nAdoption",         tone: "deep"  },
  { label: "AI Strategy &\nConsulting",       tone: "deep"  },
  { label: "Custom AI\nSolutions",            tone: "deep"  },
  { label: "Compliancy &\nSecurity",          tone: "light" },
  { label: "Data\nAnalytics",                 tone: "light" },
  { label: "Data Team\nBuilding",             tone: "light" },
  { label: "Data\nEngineering",               tone: "light" },
  { label: "Data\nPlatforms",                 tone: "light" },
  { label: "Engineering and\nLeadership Coaching", tone: "ink" },
  { label: "Platform\nEngineering",           tone: "ink"   },
  { label: "Developer\nExperience",           tone: "ink"   },
  { label: "Tech\nTransformations",           tone: "light" },
];

const NetworkWheel = () => {
  const size = 860, cx = size/2, cy = size/2, R = 300, NODE = 52;
  const N = NETWORK_NODES.length;
  const pts = NETWORK_NODES.map((n, i) => {
    const a = (i / N) * Math.PI * 2 - Math.PI/2;
    return { ...n, x: cx + Math.cos(a)*R, y: cy + Math.sin(a)*R, a };
  });
  const toneFill = { deep: "#1E4FA3", light: "#5FA8F2", ink: "#0B1C3A" };
  const edges = [];
  for (let i=0;i<N;i++) for (let j=i+1;j<N;j++) edges.push([i,j]);
  return (
    <div style={{position:"relative",width:"100%",aspectRatio:"1/1",maxWidth:720,margin:"0 auto"}}>
      <svg viewBox={`0 0 ${size} ${size}`} style={{width:"100%",height:"100%",display:"block",overflow:"visible"}}>
        <g stroke="#1E3A6E" strokeWidth={0.8} opacity={0.5}>
          {edges.map(([i,j]) => {
            const adj = (j - i === 1) || (i === 0 && j === N-1);
            if (adj) return null;
            return <line key={`e${i}-${j}`} x1={pts[i].x} y1={pts[i].y} x2={pts[j].x} y2={pts[j].y}/>;
          })}
        </g>
        <polygon
          points={pts.map(p => `${p.x},${p.y}`).join(" ")}
          fill="none" stroke="#0B1C3A" strokeWidth={3.5} strokeLinejoin="round"
        />
        <circle cx={cx} cy={cy} r={118} fill="#fff" stroke="var(--signal-500)" strokeWidth={2.5}/>
        <text x={cx} y={cy - 18} textAnchor="middle" style={{fontFamily:"var(--font-mono)",fontSize:15,fill:"var(--fg-3)",letterSpacing:"0.12em",textTransform:"uppercase"}}>powered by</text>
        <text x={cx} y={cy + 22} textAnchor="middle" style={{fontFamily:"var(--font-display)",fontSize:38,fontWeight:700,fill:"var(--navy-900)",letterSpacing:"-0.03em"}}>LEAPSTAQ</text>
        <text x={cx} y={cy + 48} textAnchor="middle" style={{fontFamily:"var(--font-mono)",fontSize:12,fill:"var(--signal-600)",letterSpacing:"0.12em"}}>// one network</text>
        {pts.map((p, i) => (
          <g key={`n${i}`}>
            <circle cx={p.x} cy={p.y} r={NODE} fill={toneFill[p.tone]} stroke="#fff" strokeWidth={3}/>
          </g>
        ))}
        {pts.map((p, i) => {
          const lx = cx + Math.cos(p.a) * (R + NODE + 26);
          const ly = cy + Math.sin(p.a) * (R + NODE + 26);
          const cosA = Math.cos(p.a);
          const anchor = cosA > 0.25 ? "start" : cosA < -0.25 ? "end" : "middle";
          const lines = p.label.split("\n");
          return (
            <text key={`l${i}`} x={lx} y={ly} textAnchor={anchor} style={{fontFamily:"var(--font-display)",fontSize:18,fontWeight:600,fill:"var(--fg-1)",letterSpacing:"-0.01em"}}>
              {lines.map((line, k) => (
                <tspan key={k} x={lx} dy={k === 0 ? (lines.length === 1 ? 6 : -6) : 22}>{line}</tspan>
              ))}
            </text>
          );
        })}
      </svg>
    </div>
  );
};

const Network = () => (
  <section id="network" className="lq-section" style={{background:"var(--paper-2)"}}>
    <div className="lq-container">
      <div className="lq-section-header" style={{display:"grid",gridTemplateColumns:"1fr 1fr",gap:48,alignItems:"flex-end",marginBottom:48}}>
        <div>
          <Eyebrow>the network</Eyebrow>
          <h2 style={{fontFamily:"var(--font-display)",fontSize:48,fontWeight:600,letterSpacing:"-0.025em",lineHeight:1.05,margin:"12px 0 0",maxWidth:"18ch"}}>One network. <span style={{fontStyle:"italic",color:"var(--navy-700)"}}>Every discipline.</span></h2>
        </div>
        <p style={{fontFamily:"var(--font-body)",fontSize:16,lineHeight:1.55,color:"var(--fg-2)",margin:0,maxWidth:"46ch",paddingBottom:6}}>
          Boutique depth across every capability, enterprise rigour on delivery. Twelve disciplines, fully connected — so your transformation never hands off between silos.
        </p>
      </div>

      <div style={{background:"var(--paper-2)",border:"1px solid var(--border-1)",borderRadius:16,padding:"56px 32px 40px",marginBottom:48}}>
        <NetworkWheel/>
        <div style={{textAlign:"center",marginTop:24,fontFamily:"var(--font-body)",fontSize:15,lineHeight:1.55,color:"var(--fg-2)",maxWidth:"62ch",marginInline:"auto"}}>
          <span style={{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--signal-600)",letterSpacing:".12em",textTransform:"uppercase",display:"block",marginBottom:10}}>// powered by</span>
          <b style={{color:"var(--fg-1)"}}>LEAPSTAQ</b>, <b style={{color:"var(--fg-1)"}}>AdamI</b>, <b style={{color:"var(--fg-1)"}}>SpriteCloud</b> &mdash; and every professional in our network.
        </div>
      </div>

      <div style={{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--signal-600)",letterSpacing:".12em",textTransform:"uppercase",marginBottom:16}}>// our hubs</div>
      <div className="lq-hubs-grid" style={{display:"grid",gridTemplateColumns:"repeat(4,1fr)",gap:16}}>
        {LOCATIONS.map((loc, i) => (
          <div key={loc.city} className="lq-card" style={{padding:28,display:"flex",flexDirection:"column",gap:16,position:"relative",overflow:"hidden"}}>
            <div style={{display:"flex",justifyContent:"space-between",alignItems:"flex-start"}}>
              <div style={{fontSize:40,lineHeight:1}}>{loc.flag}</div>
              <span style={{fontFamily:"var(--font-mono)",fontSize:10,letterSpacing:".12em",textTransform:"uppercase",padding:"4px 10px",borderRadius:999,background:loc.status==="opening"?"var(--amber-100)":"var(--green-100)",color:loc.status==="opening"?"var(--amber-500)":"var(--green-500)",fontWeight:600}}>
                {loc.status==="opening"?"opening soon":"active"}
              </span>
            </div>
            <div>
              <div style={{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--signal-600)",letterSpacing:".12em",marginBottom:4}}>// 0{i+1} · {loc.country.toLowerCase()}</div>
              <h3 style={{fontFamily:"var(--font-display)",fontSize:28,fontWeight:600,letterSpacing:"-0.02em",margin:"0 0 4px"}}>{loc.city}</h3>
              <div style={{fontFamily:"var(--font-body)",fontSize:14,color:"var(--fg-2)"}}>{loc.role}</div>
            </div>
            <div style={{marginTop:"auto",paddingTop:16,borderTop:"1px solid var(--border-1)",fontFamily:"var(--font-mono)",fontSize:12,color:"var(--fg-3)"}}>
              {loc.meta}
            </div>
          </div>
        ))}
      </div>
    </div>
  </section>
);

// ---------------- TEAM ----------------
const Team = ({compact = false}) => (
  <section id="team" className="lq-section" style={{background:"var(--paper-2)",paddingTop: compact ? 64 : 96}}>
    <div className="lq-container">
      <div className="lq-section-header" style={{display:"grid",gridTemplateColumns:"1fr 1fr",gap:48,alignItems:"flex-end",marginBottom:48}}>
        <div>
          <Eyebrow>the team</Eyebrow>
          <h2 style={{fontFamily:"var(--font-display)",fontSize:48,fontWeight:600,letterSpacing:"-0.025em",lineHeight:1.05,margin:"12px 0 0",maxWidth:"22ch"}}>Smart, human, a little bit geeky — and proud of it.</h2>
        </div>
        <p style={{fontFamily:"var(--font-body)",fontSize:16,lineHeight:1.55,color:"var(--fg-2)",margin:0,maxWidth:"46ch"}}>
          A core crew of fifteen — backed by 75+ engineers across our network. The ones who answer messages on Saturday because they genuinely care.
        </p>
      </div>
      <div className="lq-team-grid" style={{display:"grid",gridTemplateColumns:"repeat(5,1fr)",gap:2,background:"var(--border-1)",border:"1px solid var(--border-1)",borderRadius:10,overflow:"hidden"}}>
        {TEAM.map((m) => (
          <TeamCard key={m.name} member={m}/>
        ))}
      </div>
    </div>
  </section>
);

const TeamCard = ({member: m}) => {
  const [hover, setHover] = React.useState(false);
  return (
    <div
      style={{
        background:"#fff",
        padding:"24px 20px",
        display:"flex",
        flexDirection:"column",
        gap:12,
        position:"relative",
        overflow:"hidden",
        minHeight:200,
        cursor:"default",
        transition:"background var(--dur-base) var(--ease-out)"
      }}
      onMouseEnter={()=>setHover(true)}
      onMouseLeave={()=>setHover(false)}
    >
      <TeamAvatar name={m.name} photo={m.photo} size={64}/>
      <div style={{
        fontFamily:"var(--font-display)",
        fontWeight:600,
        fontSize:17,
        letterSpacing:"-0.01em",
        lineHeight:1.1,
        marginTop:"auto"
      }}>{m.name}</div>
      <div style={{
        fontFamily:"var(--font-mono)",
        fontSize:11,
        color:"var(--signal-600)",
        letterSpacing:".08em",
        textTransform:"lowercase"
      }}>{m.role}</div>

      <div style={{
        position:"absolute",
        inset:0,
        background:"var(--navy-900)",
        color:"#fff",
        padding:"24px 20px",
        display:"flex",
        flexDirection:"column",
        justifyContent:"space-between",
        opacity: hover ? 1 : 0,
        transform: hover ? "translateY(0)" : "translateY(8px)",
        transition:"opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out)",
        pointerEvents: hover ? "auto" : "none"
      }}>
        <div style={{
          fontFamily:"var(--font-mono)",
          fontSize:10,
          letterSpacing:".14em",
          textTransform:"uppercase",
          color:"var(--signal-400)"
        }}>// {m.role}</div>
        <div>
          <div style={{
            fontFamily:"var(--font-display)",
            fontWeight:600,
            fontSize:20,
            letterSpacing:"-0.015em",
            lineHeight:1.1,
            marginBottom:10
          }}>{m.name}</div>
          <div style={{
            fontFamily:"var(--font-body)",
            fontSize:13,
            lineHeight:1.5,
            color:"var(--navy-100)"
          }}>{m.hook}</div>
        </div>
      </div>
    </div>
  );
};

// ---------------- TECH WE LOVE ----------------
const TechWeLove = () => (
  <section id="tech" className="lq-section" style={{background:"var(--paper-2)",paddingTop:72,paddingBottom:72}}>
    <div className="lq-container">
      <div style={{display:"grid",gridTemplateColumns:"1fr 2fr",gap:48,alignItems:"center"}}>
        <div>
          <Eyebrow>tech we love</Eyebrow>
          <h2 style={{fontFamily:"var(--font-display)",fontSize:36,fontWeight:600,letterSpacing:"-0.02em",lineHeight:1.1,margin:"12px 0 0"}}>
            The stack<br/>we bet on.
          </h2>
        </div>
        <div style={{display:"flex",gap:10,flexWrap:"wrap"}}>
          {TECH.map(t => (
            <span key={t} style={{
              fontFamily:"var(--font-mono)",fontSize:13,padding:"10px 16px",borderRadius:999,
              background:"#fff",border:"1px solid var(--border-1)",color:"var(--fg-1)",
              display:"inline-flex",alignItems:"center",gap:8
            }}>
              <span style={{width:6,height:6,borderRadius:999,background:"var(--signal-500)"}}/>
              {t}
            </span>
          ))}
        </div>
      </div>
    </div>
  </section>
);

// ---------------- CTA ----------------
const CTABlock = () => (
  <section id="contact" className="lq-section lq-section-navy" style={{position:"relative",overflow:"hidden"}}>
    <div className="lq-mesh" style={{position:"absolute",inset:0}}/>
    <div className="lq-container" style={{position:"relative",textAlign:"center",maxWidth:780}}>
      <Eyebrow>ready to transform</Eyebrow>
      <h2 style={{fontFamily:"var(--font-display)",fontSize:64,fontWeight:500,letterSpacing:"-0.035em",lineHeight:1,margin:"16px 0 24px",color:"#fff"}}>
        Got a vision?<br/>Let's <span style={{fontStyle:"italic",color:"var(--signal-400)"}}>leap forward.</span>
      </h2>
      <p style={{fontFamily:"var(--font-body)",fontSize:18,lineHeight:1.5,color:"var(--navy-200)",margin:"0 auto 32px",maxWidth:"52ch"}}>
        We challenge, experiment, and create with one goal: turning ambitious ideas into working systems. Send us the outline — we reply within one business day.
      </p>
      <div style={{display:"flex",gap:12,flexWrap:"wrap",justifyContent:"center"}}>
        <a href="mailto:info@leapstaq.com" className="lq-btn lq-btn-accent lq-btn-lg">Start your transformation <Icon name="arrow-right" size={18}/></a>
        <a href="mailto:info@leapstaq.com" className="lq-btn lq-btn-ghost lq-btn-lg" style={{color:"#fff"}}>info@leapstaq.com</a>
      </div>
    </div>
  </section>
);

Object.assign(window, { LogoStrip, Network, Team, TechWeLove, CTABlock });
