// Sections.jsx — All page sections for the pre-launch landing.

const { useState: useSt, useEffect: useEf } = React;

// ── NAVBAR (with inline countdown) ──────────────────────────
window.NavBar = function NavBar({ onJoin }) {
  const c = window.useCountdown();
  return (
    <nav className="scs-nav" style={{
      display: "flex", alignItems: "center", justifyContent: "space-between",
      padding: "22px 40px", position: "relative", zIndex: 10,
      maxWidth: 1280, margin: "0 auto", gap: 20, flexWrap: "wrap",
    }}>
      <img src="assets/logos/SoloContentStudio_logo_onlight.svg" alt="The Solo Content Studio"
           style={{ height: 28, width: "auto" }} />

      <div style={{ display: "flex", alignItems: "center", gap: 14, flexWrap: "wrap", justifyContent: "flex-end" }}>
        {/* Inline countdown pill — orange-tinted, matches button height. Hidden on mobile via .scs-nav-countdown. */}
        <div className="scs-nav-countdown" style={{
          display: "inline-flex", alignItems: "center", gap: 10,
          height: 43, boxSizing: "border-box",
          padding: "0 18px", borderRadius: 999,
          background: "var(--orange-light)",
          border: "2px solid var(--orange)",
          whiteSpace: "nowrap",
        }}>
          <span style={{
            fontFamily: "var(--font-mono)", fontSize: 10,
            letterSpacing: "0.14em", textTransform: "uppercase",
            color: "var(--orange-deep)",
          }}>Doors open in</span>
          {[["d", c.days], ["h", c.hours], ["m", c.mins], ["s", c.secs]].map(([u, n], i) => (
            <span key={u} style={{ display: "inline-flex", alignItems: "baseline", gap: 1 }}>
              <span style={{
                fontFamily: "var(--font-display)", fontSize: 16,
                color: "var(--orange-deep)", letterSpacing: "0.02em", lineHeight: 1,
              }}>{String(n).padStart(2, "0")}</span>
              <span style={{
                fontFamily: "var(--font-mono)", fontSize: 10,
                color: "var(--orange-deep)", letterSpacing: "0.08em", opacity: 0.7,
              }}>{u}</span>
              {i < 3 && <span style={{ color: "var(--orange)", opacity: 0.5, marginLeft: 4, fontSize: 11 }}>·</span>}
            </span>
          ))}
        </div>

        <window.SCSButton variant="primary" size="md" onClick={onJoin} style={{ whiteSpace: "nowrap" }}>
          <span style={{ display: "inline-flex", alignItems: "center", gap: 10, whiteSpace: "nowrap" }}>
            <span style={{
              width: 7, height: 7, borderRadius: "50%", background: "hsl(150, 100%, 75%)",
              boxShadow: "0 0 8px hsla(150, 100%, 75%, 0.8)",
              animation: "scsPulse 1.8s ease-in-out infinite",
              flexShrink: 0,
            }} />
            <span>Join the list</span>
          </span>
        </window.SCSButton>
      </div>
    </nav>
  );
};

// ── COUNTDOWN STRIP (subtle, below nav) ─────────────────────
window.CountdownStrip = function CountdownStrip() {
  const c = window.useCountdown();
  const Cell = ({ n, l }) => (
    <div style={{ display: "flex", alignItems: "baseline", gap: 4 }}>
      <span style={{ fontFamily: "var(--font-display)", fontSize: 22, color: "var(--ink)", lineHeight: 1, minWidth: 32, textAlign: "right", letterSpacing: "0.04em" }}>
        {String(n).padStart(2, "0")}
      </span>
      <span style={{ fontFamily: "var(--font-mono)", fontSize: 10, color: "var(--muted)", textTransform: "uppercase", letterSpacing: "0.1em" }}>{l}</span>
    </div>
  );
  return (
    <div style={{
      display: "flex", alignItems: "center", justifyContent: "center", gap: 24,
      padding: "14px 20px",
      borderTop: "1px solid var(--border)", borderBottom: "1px solid var(--border)",
      background: "hsl(355 10% 97% / 0.6)",
    }}>
      <window.Eyebrow>Doors open in</window.Eyebrow>
      <Cell n={c.days}  l="days" />
      <span style={{ color: "var(--border)" }}>·</span>
      <Cell n={c.hours} l="hrs" />
      <span style={{ color: "var(--border)" }}>·</span>
      <Cell n={c.mins}  l="min" />
      <span style={{ color: "var(--border)" }}>·</span>
      <Cell n={c.secs}  l="sec" />
    </div>
  );
};

// ── SPECIALIST TICKER (hero-adjacent, horizontal scroll) ────
window.SpecialistTicker = function SpecialistTicker() {
  // Each specialist gets a tinted card with portrait + name/title.
  // Duplicate the list so the marquee loops seamlessly.
  const items = window.SPECIALISTS;
  const loop = [...items, ...items];

  return (
    <div className="scs-ticker-wrap" style={{
      position: "relative",
      marginTop: 72,
      marginInline: "calc(50% - 50vw)", // full-bleed out of the padded header
      overflow: "hidden",
      padding: "8px 0 2px",
      // soft fade at edges
      maskImage: "linear-gradient(to right, transparent 0, black 8%, black 92%, transparent 100%)",
      WebkitMaskImage: "linear-gradient(to right, transparent 0, black 8%, black 92%, transparent 100%)",
    }}>
      <div style={{
        display: "flex",
        gap: 14,
        width: "max-content",
        animation: "scsMarquee 60s linear infinite",
        paddingLeft: 14,
      }}>
        {loop.map((s, i) => (
          <div key={`${s.num}-${i}`} className="scs-ticker-card" style={{
            flex: "0 0 auto",
            width: 180,
            height: 158,
            background: `var(--${s.accent}-3)`,
            borderRadius: 20,
            padding: "14px 16px 14px",
            display: "flex",
            flexDirection: "column",
            alignItems: "center",
            justifyContent: "flex-end",
            position: "relative",
            border: "1px solid var(--border)",
          }}>
            <img src={s.portrait} alt="" className="scs-ticker-portrait" style={{
              position: "absolute",
              top: 12,
              left: "50%",
              transform: "translateX(-50%)",
              width: 118, height: 118, objectFit: "contain",
            }} />
            <div className="scs-ticker-title" style={{
              fontFamily: "var(--font-emphasis)", fontStyle: "italic",
              fontSize: 22, lineHeight: 1.1, color: "var(--ink)",
              textAlign: "center", marginTop: "auto",
              letterSpacing: "-0.01em",
            }}>
              {s.title}
            </div>
          </div>
        ))}
      </div>
    </div>
  );
};

// ── HERO — variant A: one-column editorial + specialist ticker ────
window.HeroA = function HeroA({ onJoin }) {
  return (
    <header className="scs-hero-a" style={{ position: "relative", overflow: "hidden", padding: "80px 32px 40px", textAlign: "center" }}>
      <window.MeshBg variant="warm" />

      <div style={{ position: "relative", maxWidth: 1000, margin: "0 auto" }}>
        <h1 style={{
          fontSize: "clamp(40px, 4.8vw, 72px)",
          lineHeight: 1.1, letterSpacing: "-0.03em",
          margin: "0 auto 28px", maxWidth: 900,
        }}>
          Build a one-person content studio<br />
          that produces like a <em>10-person team.</em>
        </h1>

        <p className="scs-hero-a-p" style={{
          fontSize: 22, lineHeight: 1.5, color: "var(--ink-light)",
          maxWidth: 680, margin: "0 auto 40px", fontWeight: 400,
        }}>
          Ten years ago, marketing a solo business meant a blog and a newsletter.
          Today, it's nine formats, four platforms, and a schedule that never stops.
          <br /><br />
          <span style={{ color: "var(--ink)", fontWeight: 700 }}>
            We're building you a way out.
          </span>
        </p>

        <div style={{ display: "flex", flexDirection: "column", alignItems: "center", gap: 14 }}>
          <window.SCSButton variant="primary" size="xl" onClick={onJoin}>
            Join the waitlist →
          </window.SCSButton>
          <span style={{
            fontFamily: "var(--font-mono)", fontSize: 11, color: "var(--muted)",
            letterSpacing: "0.12em", textTransform: "uppercase",
          }}>No spam · One email when doors open</span>
        </div>
      </div>

      {/* Specialist ticker */}
      <window.SpecialistTicker />
    </header>
  );
};

// ── HERO — variant B: "Studio, not Team" (split) ────────────
window.HeroB = function HeroB({ onJoin }) {
  return (
    <header className="scs-hero-a" style={{ position: "relative", overflow: "hidden", padding: "60px 32px 40px" }}>
      <window.MeshBg variant="warm" />
      <div className="scs-hero-b" style={{
        position: "relative", maxWidth: 1280, margin: "0 auto",
        display: "grid", gridTemplateColumns: "1.1fr 1fr", gap: 64, alignItems: "center",
      }}>
        <div>
          <div style={{ marginBottom: 28 }}>
            <window.Badge variant="coral">Pre-launch · April 27</window.Badge>
          </div>
          <h1 style={{
            fontSize: "clamp(40px, 4.6vw, 68px)",
            lineHeight: 0.95, letterSpacing: "-0.025em",
            margin: "0 0 28px",
          }}>
            Stop being a content team of one.<br />
            Become a content <em>studio</em> of one.
          </h1>
          <p style={{
            fontSize: 20, lineHeight: 1.55, color: "var(--ink-light)",
            maxWidth: 560, margin: "0 0 36px",
          }}>
            Ten content specialists. One tool. Your brand, your voice,
            <em style={{ fontSize: "1.1em" }}> running forever.</em>
          </p>
          <div style={{ display: "flex", flexDirection: "column", gap: 14, alignItems: "flex-start" }}>
            <window.WaitlistForm variant="light" size="lg" align="start" buttonLabel="Reserve your seat →" />
            <window.Eyebrow>Founding cohort · Limited</window.Eyebrow>
          </div>
        </div>
        <div className="scs-hero-b-tiles" style={{
          display: "grid", gridTemplateColumns: "repeat(3, 1fr)",
          gap: 10, transform: "rotate(-2deg)",
        }}>
          {window.SPECIALISTS.slice(0, 9).map((s, i) => (
            <div key={s.num} style={{
              aspectRatio: "1 / 1.1",
              background: `var(--${s.accent}-3)`,
              border: "1px solid var(--border)", borderRadius: 16,
              padding: 10, display: "flex", flexDirection: "column",
              alignItems: "center", justifyContent: "center",
              boxShadow: "var(--shadow-sm)",
              transform: `rotate(${(i % 2 ? -1 : 1) * 1.2}deg)`,
            }}>
              <img src={s.portrait} alt=""
                style={{ width: "85%", height: "auto", objectFit: "contain" }} />
              <div style={{
                fontFamily: "var(--font-mono)", fontSize: 9, color: `var(--${s.accent}-1)`,
                textTransform: "uppercase", letterSpacing: "0.08em", marginTop: 4,
                textAlign: "center",
              }}>{s.num} · {s.title.split(" ")[0]}</div>
            </div>
          ))}
        </div>
      </div>
    </header>
  );
};

// ── PROBLEM ACTS ────────────────────────────────────────────
window.ProblemActs = function ProblemActs() {
  const options = [
    { n: "01", t: "Hire freelancers", r: "You become the project manager. $2–8k/mo. You chase and review instead of creating." },
    { n: "02", t: "Agency on retainer", r: "$5–15k/mo minimum. They move at their pace. It still doesn't sound like you." },
    { n: "03", t: "Lean on ChatGPT", r: "Generic voice. Repeat your brand memory. Re-paste context indefinitely." },
    { n: "04", t: "Do it all yourself", r: "Content always loses to \"urgent\" client work. Three months pass. Burnout cycle continues." },
  ];

  // Each "act" gets its own containerized card — stacked like three slides.
  const actCard = {
    borderRadius: 28,
    padding: "72px 56px",
    position: "relative",
    overflow: "hidden",
    marginBottom: 24,
  };

  return (
    <section className="scs-act-section" style={{ padding: "96px 32px", background: "var(--cream)", position: "relative" }}>
      <div style={{ maxWidth: 1100, margin: "0 auto" }}>

        {/* ── ACT 1 — The problem (cream card, paper grain) ──────── */}
        <div className="scs-act-card scs-reveal" style={{
          ...actCard,
          background: "var(--white)",
          border: "1px solid var(--border)",
          boxShadow: "var(--shadow-sm)",
        }}>
          {/* Soft coral bloom */}
          <div style={{
            position: "absolute", inset: 0, pointerEvents: "none",
            background: "radial-gradient(ellipse 50% 50% at 50% 0%, hsla(12, 70%, 85%, 0.35), transparent 60%)",
          }} />
          <div style={{ position: "relative", textAlign: "center", maxWidth: 820, margin: "0 auto" }}>
            <window.Eyebrow style={{ marginBottom: 18, color: "var(--orange)" }}>Act 01 · The problem</window.Eyebrow>
            <h2 style={{ fontSize: "clamp(38px, 5vw, 68px)", lineHeight: 1.05, marginBottom: 28, letterSpacing: "-0.025em" }}>
              You're one person with a <em>ten-person workload.</em>
            </h2>
            <p style={{ fontSize: 21, color: "var(--ink-light)", lineHeight: 1.55, margin: 0 }}>
              The job is too big for one human.
              <br />
              The market tells solopreneurs this is a discipline problem.
              It isn't.
              <br />
              It's a <em style={{ fontSize: "1.15em", color: "var(--ink)" }}>volume problem.</em>
            </p>
          </div>
        </div>

        {/* ── ACT 2 — The bad options (tinted card) ──────────────── */}
        <div className="scs-act-card scs-reveal" style={{
          ...actCard,
          background: "var(--iris-3)",
          border: "1px solid var(--border)",
        }}>
          {/* subtle dot pattern */}
          <div style={{
            position: "absolute", inset: 0, pointerEvents: "none", opacity: 0.25,
            backgroundImage: "radial-gradient(circle, hsla(258, 30%, 50%, 0.25) 1px, transparent 1px)",
            backgroundSize: "18px 18px",
          }} />
          <div style={{ position: "relative" }}>
            <div style={{ textAlign: "center", marginBottom: 48, maxWidth: 720, marginInline: "auto" }}>
              <window.Eyebrow style={{ marginBottom: 18, color: "var(--iris-1)" }}>Act 02 · The bad options</window.Eyebrow>
              <h2 style={{ fontSize: "clamp(34px, 4.4vw, 58px)", lineHeight: 1.02, letterSpacing: "-0.02em", margin: 0 }}>
                What's a solopreneur <em>to do?</em>
              </h2>
            </div>
            <div style={{
              display: "grid",
              // Snap between 1 / 2 / 4 columns — never 3.
              gridTemplateColumns: "repeat(4, minmax(0, 1fr))",
              gap: 16,
            }}
            className="scs-act2-grid">
            
              {options.map((o) => (
                <div key={o.n} style={{
                  background: "var(--white)", border: "1px solid var(--border)",
                  borderRadius: 18, padding: "22px 20px",
                  display: "flex", flexDirection: "column", gap: 10,
                  boxShadow: "var(--shadow-sm)",
                }}>
                  <div style={{
                    fontFamily: "var(--font-mono)", fontSize: 10, fontWeight: 500,
                    letterSpacing: "0.14em", textTransform: "uppercase", color: "var(--iris-1)",
                  }}>Option {o.n}</div>
                  <h3 style={{ fontSize: 21, margin: 0, letterSpacing: "-0.01em", lineHeight: 1.15 }}>{o.t}</h3>
                  <div style={{
                    fontFamily: "var(--font-emphasis)", fontStyle: "italic",
                    fontSize: 15, color: "var(--orange)", marginTop: 2,
                  }}>Reality:</div>
                  <p style={{ fontSize: 14, color: "var(--ink-light)", lineHeight: 1.5, margin: 0 }}>{o.r}</p>
                </div>
              ))}
            </div>
          </div>
        </div>

        {/* ── ACT 3 — the way out (dark card) ────────────────────── */}
        <div className="scs-act-card scs-reveal" style={{
          ...actCard,
          background: "var(--ink-deep)",
          color: "var(--white)",
          marginBottom: 0,
        }}>
          <div style={{
            position: "absolute", inset: 0,
            background: "radial-gradient(ellipse 60% 60% at 85% 15%, hsl(12 72% 55% / 0.25), transparent 60%), radial-gradient(ellipse 60% 60% at 15% 85%, hsl(12 72% 55% / 0.15), transparent 60%)",
            pointerEvents: "none",
          }} />
          <div style={{ position: "relative", textAlign: "center", maxWidth: 780, margin: "0 auto" }}>
            <window.Eyebrow style={{ marginBottom: 18, color: "var(--orange)" }}>Act 03 · The way out</window.Eyebrow>
            <h2 style={{
              fontSize: "clamp(38px, 5vw, 64px)", color: "var(--white)", lineHeight: 1.02, marginBottom: 24, letterSpacing: "-0.025em",
            }}>
              The better way <em>has arrived.</em>
            </h2>
            <p style={{ fontSize: 21, color: "hsl(350 15% 82%)", lineHeight: 1.55, marginBottom: 44 }}>
              Don't outsource your content to a team and pay the price.<br />
              <strong style={{ color: "var(--white)", fontWeight: 600 }}>Build your studio.</strong> One that knows your brand, your audience, and your voice.
            </p>

            <div style={{
              display: "flex", alignItems: "stretch", justifyContent: "center",
              gap: 0, marginTop: 48, flexWrap: "wrap",
            }}
            className="scs-act3-chain">
              {[
                {
                  num: "→ 01",
                  t: <>A studio of<br />ten specialists</>,
                  d: "Purpose-built craftsmen for every format you create. One for newsletters, one for sales pages, one for reels. Each pre-loaded with the best practices for their craft.",
                  icon: "/illustrations-icons/ten-specialists.png",
                },
                {
                  num: "→ 02",
                  t: <>Trained once on<br />your business</>,
                  d: "Business, brand, voice, audience, captured once in the context layers and used by every specialist. Never re-explain yourself again. Update in one place as your business evolves.",
                  icon: "/illustrations-icons/knows-you.png",
                },
                {
                  num: "→ 03",
                  t: <>Running<br />itself</>,
                  d: "Set your cadence and The Studio fills the queue. Content drafts arrive on schedule, ready for your human touch. You share on all your platforms.",
                  icon: "/illustrations-icons/runs-for-you.png",
                },
              ].map((p, i, arr) => (
                <React.Fragment key={i}>
                  <div style={{
                    flex: "1 1 0",
                    minWidth: 0,
                    padding: "28px 24px",
                    display: "flex", flexDirection: "column",
                    position: "relative",
                    textAlign: "left",
                  }}>
                    <img src={p.icon} alt="" style={{
                      width: 73, height: 73, objectFit: "contain",
                      marginBottom: 16, opacity: 0.92,
                      filter: "drop-shadow(0 4px 12px hsla(0,0%,0%,0.3))",
                    }} />
                    <div style={{
                      fontFamily: "var(--font-mono)", fontSize: 11,
                      color: "var(--orange)", letterSpacing: "0.14em",
                      textTransform: "uppercase", marginBottom: 10,
                    }}>{p.num}</div>
                    <h4 style={{
                      color: "var(--white)", margin: "0 0 10px",
                      fontSize: 26, letterSpacing: "-0.015em", lineHeight: 1.1,
                    }}>{p.t}</h4>
                    <p style={{
                      color: "hsl(350 15% 78%)", fontSize: 15, margin: 0,
                      lineHeight: 1.55,
                    }}>{p.d}</p>
                  </div>
                  {i < arr.length - 1 && (
                    <div aria-hidden="true" className="scs-act3-divider" style={{
                      width: 1, alignSelf: "stretch", minHeight: 180,
                      background: "linear-gradient(to bottom, transparent, hsla(12, 72%, 55%, 0.4), transparent)",
                      margin: "12px 0", flexShrink: 0,
                    }} />
                  )}
                </React.Fragment>
              ))}
            </div>
          </div>
        </div>
      </div>
    </section>
  );
};

// ── OUTPUT SHOWCASE — "One place. Everything you ship." ─────
window.OutputShowcase = function OutputShowcase() {
  // Mapped to specialists; each format shows the specialist's accent color + animal dot.
  const formats = [
    { cat: "Written",  items: [
      { title: "Newsletters",      sub: "Weekly or evergreen", accent: "coral", spec: "Hedgehog · Newsletter Editor" },
      { title: "Blog posts",       sub: "SEO-aware long-form",  accent: "ice",   spec: "Deer · Blog Writer" },
      { title: "Sales pages",      sub: "Long-form conversion", accent: "iris",  spec: "Raccoon · Sales Page Builder" },
      { title: "Email sequences",  sub: "Welcome & nurture",    accent: "sage",  spec: "Owl · Email Strategist" },
    ]},
    { cat: "Social",   items: [
      { title: "Text posts",       sub: "Twitter · LinkedIn · Threads", accent: "pink", spec: "Parrot · Social Director" },
      { title: "Carousels",        sub: "Instagram · LinkedIn",          accent: "pink", spec: "Magpie · Slide Designer" },
      { title: "Short-form video", sub: "Reels · TikTok · Shorts",       accent: "ice",  spec: "Otter · Video Producer" },
      { title: "Long-form scripts",sub: "YouTube · webinars",            accent: "ice",  spec: "Otter · Video Producer" },
    ]},
    { cat: "Spoken",   items: [
      { title: "Podcast outlines", sub: "Solo or interview",    accent: "gold", spec: "Bear · Podcast Producer" },
      { title: "Show notes",       sub: "Timestamps & pull-quotes", accent: "gold", spec: "Bear · Podcast Producer" },
    ]},
    { cat: "Visual",   items: [
      { title: "Slide decks",      sub: "Talks & keynotes",     accent: "pink", spec: "Magpie · Slide Designer" },
      { title: "Brand & design system", sub: "Voice, tone, guardrails", accent: "gold", spec: "Badger · Chief Brand Officer" },
    ]},
    { cat: "Remix",    items: [
      { title: "Content repurposer", sub: "One asset → ten formats", accent: "lime", spec: "Octopus · Content Repurposer" },
    ]},
  ];
  return (
    <section style={{ padding: "120px 32px", background: "var(--cream)", position: "relative", overflow: "hidden" }}>
      <div style={{ position: "absolute", inset: 0, pointerEvents: "none",
        background: "radial-gradient(ellipse 70% 50% at 50% 0%, hsla(12, 80%, 85%, 0.35), transparent 60%)" }} />
      <div style={{ position: "relative", maxWidth: 1200, margin: "0 auto" }}>
        <div style={{ textAlign: "center", marginBottom: 56, maxWidth: 780, marginInline: "auto" }}>
          <window.Eyebrow style={{ marginBottom: 18, color: "var(--orange)" }}>One place · Everything you ship</window.Eyebrow>
          <h2 style={{ fontSize: "clamp(40px, 5.5vw, 72px)", lineHeight: 0.98, marginBottom: 20, letterSpacing: "-0.025em" }}>
            Your whole content operation.<br />
            <em>One window.</em> One voice.
          </h2>
          <p style={{ fontSize: 19, color: "var(--ink-light)", lineHeight: 1.55 }}>
            Newsletters. Text posts. Short-form video. Carousels. Sales pages. Podcasts. Long-form scripts.
            Email sequences. Slide decks. Every format solopreneurs ship in 2026,
            in <em style={{ fontSize: "1.1em" }}>your voice,</em> to <em style={{ fontSize: "1.1em" }}>your audience,</em> from one place.
          </p>
        </div>

        {/* "Platforms served" mono ribbon */}
        <div style={{
          display: "flex", flexWrap: "wrap", gap: 10, justifyContent: "center",
          marginBottom: 48, maxWidth: 900, marginInline: "auto",
        }}>
          {["Newsletter", "Twitter / X", "LinkedIn", "Threads", "Instagram", "TikTok", "YouTube", "YouTube Shorts", "Podcast", "Blog", "Email", "Sales", "Slides"].map(p => (
            <span key={p} style={{
              fontFamily: "var(--font-mono)", fontSize: 11, fontWeight: 500,
              letterSpacing: "0.08em", textTransform: "uppercase",
              padding: "7px 14px", borderRadius: 999, lineHeight: 1.2,
              background: "var(--white)", color: "var(--ink-light)",
              border: "1px solid var(--border)",
            }}>{p}</span>
          ))}
        </div>

        {/* Format grid grouped by category */}
        <div style={{ display: "flex", flexDirection: "column", gap: 28 }}>
          {formats.map(group => (
            <div key={group.cat}>
              <div style={{ display: "flex", alignItems: "baseline", gap: 16, marginBottom: 14 }}>
                <div style={{
                  fontFamily: "var(--font-display)", fontSize: 26, letterSpacing: "-0.015em", color: "var(--ink)",
                }}>{group.cat}.</div>
                <div style={{ flex: 1, height: 1, background: "var(--border)" }} />
              </div>
              <div style={{
                display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(240px, 1fr))", gap: 14,
              }}>
                {group.items.map(it => (
                  <div key={it.title + it.spec} style={{
                    background: "var(--white)", border: "1px solid var(--border)",
                    borderRadius: 20, padding: "20px 22px",
                    display: "flex", flexDirection: "column", gap: 10,
                    boxShadow: "var(--shadow-sm)", position: "relative", overflow: "hidden",
                  }}>
                    <span style={{
                      position: "absolute", top: 0, left: 0, right: 0, height: 3,
                      background: `var(--${it.accent}-2)`,
                    }} />
                    <div style={{ display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8 }}>
                      <h3 style={{ fontSize: 19, margin: 0, letterSpacing: "-0.01em" }}>{it.title}</h3>
                      <span style={{ width: 10, height: 10, borderRadius: "50%", background: `var(--${it.accent}-2)`, flexShrink: 0 }} />
                    </div>
                    <div style={{ fontSize: 13, color: "var(--ink-light)", lineHeight: 1.5 }}>{it.sub}</div>
                    <div style={{
                      fontFamily: "var(--font-mono)", fontSize: 10, letterSpacing: "0.1em",
                      textTransform: "uppercase", color: `var(--${it.accent}-1)`, marginTop: 2,
                    }}>· {it.spec}</div>
                  </div>
                ))}
              </div>
            </div>
          ))}
        </div>

        {/* Footer line — voice & preferences */}
        <div style={{
          marginTop: 56, padding: "28px 36px", background: "var(--white)",
          border: "1px solid var(--border)", borderRadius: 20,
          display: "flex", alignItems: "center", justifyContent: "space-between",
          flexWrap: "wrap", gap: 20, boxShadow: "var(--shadow-sm)",
        }}>
          <div style={{ flex: "1 1 300px" }}>
            <div style={{
              fontFamily: "var(--font-mono)", fontSize: 11, letterSpacing: "0.14em",
              textTransform: "uppercase", color: "var(--orange)", marginBottom: 6,
            }}>The connective tissue</div>
            <div style={{ fontFamily: "var(--font-display)", fontSize: 24, letterSpacing: "-0.015em", lineHeight: 1.15 }}>
              A single brand-context layer. <em>Every</em> specialist reads from it.
            </div>
          </div>
          <div style={{ display: "flex", gap: 8, flexWrap: "wrap" }}>
            {["Voice profile", "Audience", "Offers", "Content pillars", "Preferences"].map(l => (
              <span key={l} style={{
                fontFamily: "var(--font-mono)", fontSize: 11, letterSpacing: "0.08em",
                textTransform: "uppercase", padding: "8px 14px", borderRadius: 999,
                background: "var(--snow)", color: "var(--ink-light)", border: "1px solid var(--border)",
              }}>{l}</span>
            ))}
          </div>
        </div>
      </div>
    </section>
  );
};

// ── THE TEN (roster with real character portraits) ──────────
window.TheTen = function TheTen() {
  return (
    <section style={{ padding: "120px 32px", background: "var(--snow)", position: "relative" }}>
      <div style={{ maxWidth: 1200, margin: "0 auto" }}>
        <div style={{ textAlign: "center", marginBottom: 64, maxWidth: 720, marginInline: "auto" }}>
          <window.Eyebrow style={{ marginBottom: 18 }}>Meet the studio · Currently in training</window.Eyebrow>
          <h2 style={{ fontSize: "clamp(38px, 5vw, 64px)", lineHeight: 1.05, marginBottom: 20 }}>
            Ten <em>specialists.</em><br />
            On staff. Forever.
          </h2>
          <p style={{ fontSize: 18, color: "var(--ink-light)" }}>
            Each one knows a format cold. Each one knows your brand. None of them will quit on a Tuesday.
          </p>
        </div>

        <div style={{
          display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(200px, 1fr))", gap: 18,
        }}>
          {window.SPECIALISTS.map((s) => (
            <div key={s.num} style={{
              background: `var(--${s.accent}-3)`,
              border: "1px solid var(--border)", borderRadius: 20,
              padding: "20px 18px", display: "flex", flexDirection: "column",
              alignItems: "center", gap: 10,
              boxShadow: "var(--shadow-sm)",
            }}>
              <img src={s.portrait} alt={s.animal}
                style={{ width: "100%", maxWidth: 150, height: "auto", objectFit: "contain" }} />
              <div style={{
                fontFamily: "var(--font-mono)", fontSize: 10, fontWeight: 500,
                letterSpacing: "0.14em", color: `var(--${s.accent}-1)`,
                textTransform: "uppercase",
              }}>No. {s.num}</div>
              <div style={{
                fontFamily: "var(--font-display)", fontSize: 18, textAlign: "center",
                lineHeight: 1.1, color: "var(--ink)", letterSpacing: "-0.01em",
              }}>{s.title}</div>
              <div style={{
                fontFamily: "var(--font-emphasis)", fontStyle: "italic", fontSize: 14,
                color: "var(--orange)",
              }}>{s.animal}</div>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
};

// ── THE TEN — Meet the studio ───────────────────────────────
window.TheTen = function TheTen() {
  // Role → { image filename, content-type pills, optional bg override to de-dupe accents }
  const TEAM = {
    "Newsletter Editor":   { img: "newsletter-editor.png",     pills: ["Newsletters"] },
    "Chief Brand Officer": { img: "brand-keeper.png",          pills: ["Voice guide", "Style rules", "Brand guardrails"] },
    "Social Director":     { img: "social-director.png",       pills: ["Text posts", "Carousels", "Short-form video"] },
    // Podcast is also gold — shift warmer (toward apricot) so it doesn't read as brand-officer.
    "Podcast Producer":    { img: "podcast-producer.png",      pills: ["Episode outlines", "Show notes", "Pull-quotes"], bg: "hsl(34, 70%, 92%)" },
    "Sales Page Builder":  { img: "sales-page-copywriter.png", pills: ["Sales pages", "Landing pages"] },
    "Email Strategist":    { img: "sequence-strategist.png",   pills: ["Email sequences"] },
    "Blog Writer":         { img: "blog-writer.png",           pills: ["Long-form articles"] },
    // Slide is also pink — shift slightly cooler (toward mauve).
    "Slide Designer":      { img: "slide-designer.png",        pills: ["Slide decks"], bg: "hsl(320, 45%, 93%)" },
    // Video is also ice — shift toward a dustier sky tone.
    "Video Producer":      { img: "video-producer.png",        pills: ["YouTube scripts"], bg: "hsl(215, 45%, 93%)" },
    "Content Repurposer":  { img: "content-repurposer.png",    pills: ["Cross-platform remix"] },
  };

  return (
    <section className="scs-ten-section" style={{
      padding: "120px 32px", background: "var(--white)",
      position: "relative", overflow: "hidden",
    }}>
      <div style={{
        position: "absolute", inset: 0, pointerEvents: "none",
        background: "radial-gradient(ellipse 60% 40% at 50% 0%, hsla(12, 80%, 88%, 0.35), transparent 60%)",
      }} />
      <div style={{ position: "relative", maxWidth: 1280, margin: "0 auto" }}>
        <div style={{ textAlign: "center", marginBottom: 72, maxWidth: 900, marginInline: "auto" }}>
          <window.Eyebrow style={{ marginBottom: 16, color: "var(--orange)" }}>
            The specialists in your studio · currently in training
          </window.Eyebrow>
          <h2 style={{
            fontSize: "clamp(40px, 5.2vw, 68px)", lineHeight: 1.0,
            letterSpacing: "-0.025em", margin: 0,
          }}>
            Ten specialists. Highly trained.<br />
            <em>Creating content for you.</em>
          </h2>
        </div>

        <div className="scs-ten-grid" style={{
          display: "grid",
          gridTemplateColumns: "repeat(5, 1fr)",
          gap: "20px",
        }}>
          {window.SPECIALISTS.map((s, i) => {
            const team = TEAM[s.title] || {};
            return (
              <div key={s.num} className="scs-ten-card scs-reveal" style={{
                background: team.bg || `var(--${s.accent}-3)`,
                border: "1px solid var(--border)",
                borderRadius: 20,
                padding: "20px 18px 22px",
                display: "flex", flexDirection: "column",
                alignItems: "center", textAlign: "center",
                boxShadow: "var(--shadow-sm)",
                "--scs-delay": `${i * 55}ms`,
              }}>
                {/* Isometric studio scene */}
                <img src={`assets/team/${team.img}`} alt={s.title} style={{
                  width: "100%", height: "auto",
                  aspectRatio: "1 / 1", objectFit: "contain",
                  marginBottom: 14,
                }} />

                {/* № */}
                <div style={{
                  fontFamily: "var(--font-mono)", fontSize: 10,
                  letterSpacing: "0.14em", textTransform: "uppercase",
                  color: `var(--${s.accent}-1)`, marginBottom: 4,
                }}>
                  № {s.num}
                </div>

                {/* Role */}
                <div style={{
                  fontFamily: "var(--font-display)", fontSize: 19,
                  letterSpacing: "-0.015em", lineHeight: 1.15,
                  color: "var(--ink)", marginBottom: 14,
                }}>
                  {s.title}
                </div>

                {/* Content-type pills */}
                <div style={{
                  display: "flex", flexWrap: "wrap",
                  gap: 5, justifyContent: "center",
                }}>
                  {(team.pills || []).map(fmt => (
                    <span key={fmt} style={{
                      fontFamily: "var(--font-mono)", fontSize: 9,
                      fontWeight: 500, letterSpacing: "0.06em",
                      textTransform: "uppercase", lineHeight: 1.2,
                      padding: "5px 9px", borderRadius: 999,
                      background: "var(--white)",
                      color: `var(--${s.accent}-1)`,
                      border: `1px solid var(--${s.accent}-2)`,
                      whiteSpace: "nowrap",
                    }}>{fmt}</span>
                  ))}
                </div>
              </div>
            );
          })}
        </div>
      </div>
    </section>
  );
};

// ── PEEK SECTION ────────────────────────────────────────────
window.PeekSection = function PeekSection() {
  return (
    <section className="scs-peek-section" style={{ padding: "120px 32px", background: "var(--white)", position: "relative", overflow: "hidden" }}>
      <window.MeshBg variant="warm" style={{ opacity: 0.4 }} />
      <div style={{ position: "relative", maxWidth: 1100, margin: "0 auto" }}>
        <div style={{ textAlign: "center", marginBottom: 48, maxWidth: 720, marginInline: "auto" }}>
          <window.Eyebrow style={{ marginBottom: 18, color: "var(--orange)" }}>A look inside</window.Eyebrow>
          <h2 style={{ fontSize: "clamp(34px, 4.5vw, 60px)", lineHeight: 1.05, marginBottom: 16 }}>
            Your studio is <em>waiting for you.</em><br />
            Available soon.
          </h2>
          <p style={{ fontSize: 18, color: "var(--ink-light)" }}>
            We're not ready to show the full thing. But here's a glimpse of what's coming.
          </p>
        </div>
        <window.StudioPeek blur={5} caption="Pre-launch window opens April 27" />
      </div>
    </section>
  );
};

// ── REACTIONS (real screenshots — "genius" word keeps coming back) ─
window.Reactions = function Reactions() {
  // Real screenshots from DMs / messages (avatars pre-masked in source PNGs).
  const shots = [
    {
      src: "assets/reactions/reaction-2-story-reply-v2_final.png",
      platform: "Instagram DM",
      pull: "ANOTHER GENIUS IDEA",
      tilt: -1.6,
      ratio: "1206 / 805",
    },
    {
      src: "assets/reactions/reaction-1-story-reply-v2_final.png",
      platform: "Instagram · Story reply",
      pull: "This is genius.",
      tilt: 1.2,
      ratio: "655 / 732",
    },
    {
      src: "assets/reactions/reaction-3-whatsapp.png",
      platform: "WhatsApp",
      pull: "Where do I pay?",
      tilt: -0.8,
      ratio: "866 / 344",
    },
  ];

  return (
    <section className="scs-reactions-section" style={{
      padding: "120px 32px 140px", background: "var(--cream)",
      position: "relative", overflow: "hidden",
    }}>
      {/* warm bloom behind the headline */}
      <div style={{
        position: "absolute", inset: 0, pointerEvents: "none",
        background: "radial-gradient(ellipse 60% 40% at 50% 0%, hsla(12, 80%, 85%, 0.35), transparent 60%)",
      }} />

      <div style={{ position: "relative", maxWidth: 1200, margin: "0 auto" }}>
        <div style={{ textAlign: "center", marginBottom: 72, maxWidth: 760, marginInline: "auto" }}>
          <window.Eyebrow style={{ marginBottom: 18, color: "var(--orange)" }}>
            Early reactions · From people we've quietly shown
          </window.Eyebrow>
          <h2 style={{
            fontSize: "clamp(34px, 4.5vw, 58px)",
            lineHeight: 1.05, letterSpacing: "-0.025em", margin: 0,
          }}>
            They keep using<br />
            the same word: <em>genius.</em>
          </h2>
        </div>

        {/* Screenshot grid */}
        <div className="scs-reactions-grid" style={{
          display: "grid",
          gridTemplateColumns: "repeat(3, 1fr)",
          gap: 28,
          alignItems: "start",
        }}>
          {shots.map((s, i) => (
            <figure key={i} className="scs-reaction-figure scs-reveal" style={{
              margin: 0,
              background: "var(--white)",
              border: "1px solid var(--border)",
              borderRadius: 20,
              padding: "18px 18px 20px",
              boxShadow: "0 24px 60px -28px hsla(348, 40%, 25%, 0.25), var(--shadow-sm)",
              display: "flex", flexDirection: "column", gap: 14,
              "--scs-delay": `${i * 110}ms`,
              "--scs-tilt": `${s.tilt}deg`,
            }}>
              {/* The actual screenshot — contained inside a subtle frame */}
              <div style={{
                background: "hsl(0 0% 98%)",
                border: "1px solid var(--border)",
                borderRadius: 14,
                overflow: "hidden",
                aspectRatio: s.ratio,
                display: "flex", alignItems: "center", justifyContent: "center",
                position: "relative",
              }}>
                <img src={s.src} alt={`Reaction from ${s.platform}: ${s.pull}`} style={{
                  width: "100%", height: "100%",
                  objectFit: "contain",
                  objectPosition: "center",
                  display: "block",
                }} />
              </div>

              {/* Pull-quote under the screenshot */}
              <div style={{
                fontFamily: "var(--font-emphasis)", fontStyle: "italic",
                fontSize: 22, lineHeight: 1.15, letterSpacing: "-0.01em",
                color: "var(--ink)", padding: "2px 4px 0",
              }}>
                "{s.pull}"
              </div>
            </figure>
          ))}
        </div>

      </div>
    </section>
  );
};

// ── CTA / WAITLIST ──────────────────────────────────────────
window.WaitlistCTA = function WaitlistCTA({ formRef }) {
  const c = window.useCountdown();
  return (
    <section ref={formRef} className="scs-cta-section" style={{
      padding: "140px 32px", background: "var(--ink-deep)",
      position: "relative", overflow: "hidden", color: "var(--white)",
    }}>
      <div style={{
        position: "absolute", inset: 0,
        background: "radial-gradient(ellipse 70% 70% at 50% 0%, hsl(12 72% 55% / 0.28), transparent 60%), radial-gradient(ellipse 50% 60% at 85% 100%, hsl(340 70% 55% / 0.16), transparent 60%)",
        pointerEvents: "none",
      }} />
      <div style={{ position: "relative", maxWidth: 760, margin: "0 auto", textAlign: "center" }}>

        {/* Countdown — moved above headline as urgency cue */}
        <div className="scs-cta-countdown" style={{
          display: "inline-flex", gap: 18, padding: "14px 24px",
          background: "hsl(348 40% 14%)", borderRadius: 999,
          border: "1px solid hsl(348 40% 22%)", marginBottom: 28,
          alignItems: "center",
        }}>
          <span className="scs-cta-countdown-label" style={{
            fontFamily: "var(--font-mono)", fontSize: 10, color: "var(--orange)",
            letterSpacing: "0.18em", textTransform: "uppercase",
          }}>Doors open in</span>
          {[["D", c.days], ["H", c.hours], ["M", c.mins], ["S", c.secs]].map(([l, n]) => (
            <div key={l} style={{ display: "flex", alignItems: "baseline", gap: 4 }}>
              <span style={{
                fontFamily: "var(--font-display)", fontSize: 20, color: "var(--white)",
                lineHeight: 1, letterSpacing: "-0.02em",
              }}>{String(n).padStart(2, "0")}</span>
              <span style={{
                fontFamily: "var(--font-mono)", fontSize: 10, color: "hsl(350 15% 62%)",
              }}>{l}</span>
            </div>
          ))}
        </div>

        <h2 style={{
          fontSize: "clamp(44px, 6vw, 80px)",
          color: "var(--white)", lineHeight: 1.02, marginBottom: 22,
          letterSpacing: "-0.03em",
        }}>
          Be first <em>through the door.</em>
        </h2>
        <p style={{
          fontSize: 20, color: "hsl(350 15% 82%)", lineHeight: 1.55,
          maxWidth: 580, margin: "0 auto 36px",
        }}>
          Join the founding cohort. One email the moment doors open, plus early-access perks you only get by being on this list.
        </p>

        <window.WaitlistForm
          variant="dark"
          size="xl"
          align="center"
          buttonLabel="Save my seat →"
        />

        <div style={{
          fontFamily: "var(--font-mono)", fontSize: 11, color: "hsl(350 15% 62%)",
          letterSpacing: "0.14em", textTransform: "uppercase", marginTop: 22,
        }}>
          No spam · Unsubscribe any time
        </div>
      </div>
    </section>
  );
};

// ── FOOTER ──────────────────────────────────────────────────
window.SCSFooter = function SCSFooter() {
  return (
    <footer style={{
      padding: "40px 32px", background: "var(--ink-deep)",
      borderTop: "1px solid hsl(348 40% 18%)",
      color: "hsl(350 15% 60%)",
    }}>
      <div className="scs-footer-row" style={{
        maxWidth: 1200, margin: "0 auto",
        display: "flex", justifyContent: "space-between", alignItems: "center",
        flexWrap: "wrap", gap: 16,
      }}>
        <img src="assets/logos/SoloContentStudio_Logo.svg" alt="Solo Content Studio"
          style={{ height: 22, width: "auto" }} />
        <div style={{
          fontFamily: "var(--font-mono)", fontSize: 11,
          letterSpacing: "0.12em", textTransform: "uppercase",
        }}>
          solocontent.studio · Built by Caroline &amp; Jason Zook · © 2026
        </div>
      </div>
    </footer>
  );
};
