// Direction A — Editorial Apple (monochrome, centered, generous whitespace)
// Single full landing page with scroll animation, animated chats, grants + dossier mockups.

// Header CTA — auth-aware. Signed-out users see "Sign in" → /signup;
// signed-in users see "Open exoteam" → /dashboard. site-auth.jsx loads
// after site-a.jsx in index.html but mounting happens later, so the
// window.exoteamAuth lookup at render time is safe.
const NavCTA = () => {
  const auth = (window.exoteamAuth && window.exoteamAuth.useAuth)
    ? window.exoteamAuth.useAuth()
    : { user: null };
  const { user } = auth;
  function go(path) {
    window.history.pushState({}, '', path);
    window.dispatchEvent(new PopStateEvent('popstate'));
  }
  return user ? (
    <button className="dirA-nav-cta" onClick={() => go('/dashboard')}>
      Open exoteam
    </button>
  ) : (
    <button className="dirA-nav-cta" onClick={() => go('/signup')}>
      Sign in
    </button>
  );
};

const SiteA = () => (
  <div className="dirA exo-site">
    <style>{`
html, body { background: #fff; overflow-x: clip; }
.dirA { background: #fff; width: 100%; }
.dirA-nav { display: flex; align-items: center; padding: 22px 56px; position: sticky; top: 0; z-index: 100; background: rgba(255,255,255,0.78); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); border-bottom: 1px solid rgba(0,0,0,0.04); }
.dirA-nav-links { display: flex; gap: 28px; margin-left: auto; font-size: 13.5px; color: #1d1d1f; }
.dirA-nav-links a { cursor: pointer; }
.dirA-nav-cta { margin-left: 28px; background: #1d1d1f; color: #fff; padding: 8px 18px; border-radius: 999px; font-size: 13px; font-weight: 500; border: none; }

.dirA-hero { padding: 120px 56px 80px; text-align: center; }
.dirA-eyebrow { font-size: 13px; color: #86868b; font-weight: 500; letter-spacing: -0.005em; margin-bottom: 22px; display: inline-flex; align-items: center; gap: 10px; }
.dirA-eyebrow-dot { width: 6px; height: 6px; border-radius: 50%; background: #34c759; box-shadow: 0 0 0 0 rgba(52,199,89,0.5); animation: pulseDot 2s infinite; }
@keyframes pulseDot { 0% { box-shadow: 0 0 0 0 rgba(52,199,89,0.5); } 70% { box-shadow: 0 0 0 8px rgba(52,199,89,0); } 100% { box-shadow: 0 0 0 0 rgba(52,199,89,0); } }
.dirA-h1 { font-size: 92px; line-height: 0.98; letter-spacing: -0.04em; font-weight: 600; margin: 0 0 28px; color: #1d1d1f; }
.dirA-h1 .em { font-weight: 600; background: linear-gradient(180deg, #1d1d1f 60%, #6e6e73 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.dirA-sub { font-size: 22px; line-height: 1.4; color: #6e6e73; max-width: 720px; margin: 0 auto 28px; letter-spacing: -0.01em; }
.dirA-promise { display: flex; gap: 28px; justify-content: center; margin: 0 auto 40px; font-size: 13.5px; color: #1d1d1f; flex-wrap: wrap; }
.dirA-promise-item { display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px 7px 11px; border-radius: 999px; background: rgba(0,0,0,0.04); }
.dirA-promise-item svg { flex-shrink: 0; }
.dirA-cta-row { display: flex; gap: 12px; justify-content: center; }
.dirA-cta { padding: 14px 28px; border-radius: 999px; font-size: 15px; font-weight: 500; border: none; cursor: pointer; }
.dirA-cta.primary { background: #1d1d1f; color: #fff; }
.dirA-cta.primary:hover { background: #000; }
.dirA-cta.ghost { background: rgba(0,0,0,0.05); color: #1d1d1f; }
.dirA-cta.ghost:hover { background: rgba(0,0,0,0.08); }

.dirA-dash-wrap { padding: 24px 56px 80px; display: flex; justify-content: center; }
.dirA-dash-frame { width: 1100px; transform-origin: top center; }

.dirA-section { padding: 100px 56px; }
.dirA-section h2 { font-size: 56px; letter-spacing: -0.03em; font-weight: 600; line-height: 1.04; margin: 0 0 18px; max-width: 760px; }
.dirA-section .lede { font-size: 19px; line-height: 1.55; color: #6e6e73; max-width: 640px; margin-bottom: 56px; }
.dirA-center { text-align: center; }
.dirA-center h2, .dirA-center .lede { margin-left: auto; margin-right: auto; }

.dirA-local { background: #0a0a0c; color: #f5f5f7; padding: 110px 56px; text-align: center; border-radius: 32px; margin: 0 auto; max-width: 1180px; }
.dirA-local h2 { color: #f5f5f7; font-size: 64px; letter-spacing: -0.035em; font-weight: 600; line-height: 1.02; margin: 0 auto 22px; max-width: 880px; }
.dirA-local .lede { color: rgba(245,245,247,0.65); font-size: 19px; max-width: 600px; margin: 0 auto 48px; line-height: 1.55; }
.dirA-local-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: rgba(255,255,255,0.08); border-radius: 24px; overflow: hidden; max-width: 1080px; margin: 0 auto; }
.dirA-local-cell { background: #0a0a0c; padding: 36px 28px; text-align: left; }
.dirA-local-cell-icon { width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(135deg, rgba(91,141,239,0.20), rgba(124,105,224,0.20)); display: grid; place-items: center; color: #5b8def; margin-bottom: 18px; }
.dirA-local-cell-h { font-size: 18px; font-weight: 600; letter-spacing: -0.015em; margin-bottom: 8px; }
.dirA-local-cell-d { font-size: 14px; color: rgba(245,245,247,0.62); line-height: 1.55; }

.dirA-band, .dirA-mock-band, .dirA-grow, .dirA-bundles { width: 100%; box-sizing: border-box; }
.dirA-band { background: #f5f5f7; padding: 100px 56px; }
.dirA-band-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; max-width: 1100px; margin: 0 auto; }
.dirA-band h2 { font-size: 48px; letter-spacing: -0.03em; font-weight: 600; line-height: 1.05; margin: 0 0 18px; }
.dirA-band .lede { font-size: 18px; color: #424245; line-height: 1.55; }

.dirA-mock-band { padding: 80px 56px 100px; background: #f5f5f7; }
.dirA-mock-band-inner { max-width: 1240px; margin: 0 auto; }
.dirA-mock-head { text-align: center; margin-bottom: 40px; }
.dirA-mock-head h2 { font-size: 48px; letter-spacing: -0.03em; font-weight: 600; line-height: 1.05; margin: 0 auto 14px; max-width: 720px; }
.dirA-mock-head .lede { font-size: 18px; color: #6e6e73; max-width: 600px; margin: 0 auto; line-height: 1.55; }
.dirA-mock-tabs { display: flex; gap: 6px; justify-content: center; margin: 28px 0 36px; padding: 6px; background: rgba(0,0,0,0.04); border-radius: 999px; width: fit-content; margin-left: auto; margin-right: auto; }
.dirA-mock-tab { padding: 8px 18px; border-radius: 999px; font-size: 13px; font-weight: 500; border: none; background: transparent; color: #424245; cursor: pointer; transition: all 0.18s; }
.dirA-mock-tab.active { background: #fff; color: #1d1d1f; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.dirA-mock-stage { display: flex; justify-content: center; }
.dirA-mock-stage .exo-dash { width: 1100px; max-width: 100%; transform-origin: top center; }

.dirA-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 60px; padding: 100px 56px; text-align: center; }
.dirA-stat-n { font-size: 80px; font-weight: 600; letter-spacing: -0.04em; line-height: 1; background: linear-gradient(180deg, #1d1d1f 60%, #6e6e73 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.dirA-stat-l { font-size: 15px; color: #86868b; margin-top: 14px; }

.dirA-pricing { padding: 120px 56px; }
.dirA-pricing-head { text-align: center; margin-bottom: 56px; }
.dirA-tiers { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; max-width: 1180px; margin: 0 auto; }
.dirA-tier { background: #fff; border: 1px solid rgba(0,0,0,0.08); border-radius: 22px; padding: 28px 24px; display: flex; flex-direction: column; }
.dirA-tier.feat { background: #1d1d1f; color: #fff; border-color: #1d1d1f; }
.dirA-tier-name { font-size: 14px; font-weight: 600; }
.dirA-tier-price { font-size: 44px; font-weight: 600; letter-spacing: -0.03em; margin: 14px 0 4px; }
.dirA-tier-per { font-size: 13px; color: #86868b; margin-bottom: 20px; }
.dirA-tier.feat .dirA-tier-per { color: #a1a1a6; }
.dirA-tier-feat { font-size: 13.5px; color: #424245; padding: 6px 0; border-top: 1px solid rgba(0,0,0,0.06); }
.dirA-tier.feat .dirA-tier-feat { color: #d2d2d7; border-color: rgba(255,255,255,0.10); }
.dirA-tier-cta { margin-top: 20px; padding: 11px 18px; border-radius: 999px; font-size: 13.5px; font-weight: 500; background: rgba(0,0,0,0.06); border: none; color: #1d1d1f; cursor: pointer; }
.dirA-tier.feat .dirA-tier-cta { background: #fff; color: #1d1d1f; }
.dirA-tier-team { grid-column: 1 / -1; margin-top: 8px; display: flex; align-items: center; justify-content: space-between; padding: 22px 28px; border: 1px solid rgba(0,0,0,0.08); border-radius: 22px; }

.dirA-final { padding: 140px 56px; text-align: center; }
.dirA-final h2 { font-size: 76px; letter-spacing: -0.035em; font-weight: 600; line-height: 1.02; margin: 0 0 28px; max-width: 980px; margin-left: auto; margin-right: auto; }
.dirA-final p { font-size: 19px; color: #6e6e73; max-width: 580px; margin: 0 auto 36px; }

.dirA-foot { padding: 56px; border-top: 1px solid rgba(0,0,0,0.06); display: flex; align-items: center; color: #86868b; font-size: 13px; }
.dirA-foot-links { margin-left: auto; display: flex; gap: 22px; }

/* ── Personalization ── */
.dirA-perso { padding: 120px 56px; background: #fff; }
.dirA-perso-inner { max-width: 1180px; margin: 0 auto; }
.dirA-perso-head { text-align: center; margin-bottom: 72px; }
.dirA-perso-head h2 { font-size: 56px; letter-spacing: -0.03em; font-weight: 600; line-height: 1.04; margin: 0 auto 18px; max-width: 880px; }
.dirA-perso-head .lede { font-size: 19px; color: #6e6e73; max-width: 680px; margin: 0 auto; line-height: 1.55; }
.dirA-perso-grid { display: grid; grid-template-columns: 1fr 1.05fr; gap: 56px; align-items: center; }
.dirA-contact-card { background: #fff; border: 1px solid rgba(0,0,0,0.08); border-radius: 22px; padding: 24px 26px; box-shadow: 0 1px 2px rgba(0,0,0,0.04), 0 12px 36px rgba(0,0,0,0.06); }
.dirA-contact-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.dirA-contact-avatar { width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-weight: 600; font-size: 17px; letter-spacing: 0.01em; flex-shrink: 0; box-shadow: inset 0 0 0 0.5px rgba(255,255,255,0.25); }
.dirA-contact-name { font-size: 17px; font-weight: 600; letter-spacing: -0.01em; color: #1d1d1f; }
.dirA-contact-role { font-size: 13px; color: #86868b; margin-top: 2px; }
.dirA-contact-kv { display: grid; grid-template-columns: 96px 1fr; gap: 8px 16px; font-size: 13px; }
.dirA-contact-kv dt { color: #86868b; font-weight: 500; }
.dirA-contact-kv dd { color: #1d1d1f; margin: 0; }
.dirA-contact-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 16px; padding-top: 16px; border-top: 1px solid rgba(0,0,0,0.05); }
.dirA-contact-tag { font-size: 11.5px; padding: 3px 10px; border-radius: 999px; background: rgba(91,141,239,0.10); color: #2a5fbf; font-weight: 500; }
.dirA-contact-tag.warm { background: rgba(232,158,91,0.14); color: #b06b22; }
.dirA-contact-tag.dim { background: rgba(0,0,0,0.05); color: #6e6e73; }
.dirA-tone-card { background: #f5f5f7; border-radius: 22px; padding: 6px; }
.dirA-tone-tabs { display: flex; gap: 4px; padding: 4px; margin-bottom: 4px; }
.dirA-tone-tab { flex: 1; padding: 9px 12px; border-radius: 999px; font-size: 12.5px; font-weight: 500; background: transparent; border: none; color: #6e6e73; cursor: pointer; text-align: left; display: flex; align-items: center; gap: 8px; }
.dirA-tone-tab.active { background: #fff; color: #1d1d1f; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.dirA-tone-tab-dot { width: 8px; height: 8px; border-radius: 50%; }
.dirA-tone-body { background: #fff; border-radius: 18px; padding: 22px 24px; min-height: 220px; }
.dirA-tone-meta { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: #86868b; margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid rgba(0,0,0,0.05); }
.dirA-tone-text { font-size: 14px; line-height: 1.6; color: #1d1d1f; white-space: pre-wrap; }
.dirA-tone-foot { display: flex; gap: 8px; align-items: center; margin-top: 16px; padding-top: 14px; border-top: 1px solid rgba(0,0,0,0.05); }
.dirA-tone-chip { font-size: 11px; padding: 3px 9px; border-radius: 999px; background: rgba(124,105,224,0.12); color: #5c47c4; font-weight: 500; }

.dirA-grow { padding: 100px 56px; background: #fafafa; }
.dirA-grow-inner { max-width: 1100px; margin: 0 auto; text-align: center; }
.dirA-grow h2 { font-size: 48px; letter-spacing: -0.03em; font-weight: 600; line-height: 1.05; margin: 0 auto 14px; max-width: 760px; }
.dirA-grow .lede { font-size: 18px; color: #6e6e73; max-width: 620px; margin: 0 auto 56px; line-height: 1.55; }
.dirA-grow-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; counter-reset: gstep; }
.dirA-grow-step { text-align: left; padding: 24px 22px; border-radius: 20px; background: #fff; border: 1px solid rgba(0,0,0,0.06); position: relative; }
.dirA-grow-step-n { font-size: 11px; font-weight: 600; color: #86868b; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 12px; }
.dirA-grow-step-h { font-size: 16px; font-weight: 600; letter-spacing: -0.015em; margin-bottom: 8px; }
.dirA-grow-step-d { font-size: 13.5px; color: #6e6e73; line-height: 1.55; }
.dirA-grow-step .pip { width: 28px; height: 28px; border-radius: 9px; background: linear-gradient(135deg, #5b8def, #7c69e0); display: grid; place-items: center; color: #fff; font-size: 13px; font-weight: 600; margin-bottom: 16px; }
.dirA-grow-step:nth-child(2) .pip { background: linear-gradient(135deg, #7c69e0, #e07ab0); }
.dirA-grow-step:nth-child(3) .pip { background: linear-gradient(135deg, #e07ab0, #e89e5b); }
.dirA-grow-step:nth-child(4) .pip { background: linear-gradient(135deg, #e89e5b, #5db98a); }

/* ── Multi-org ── */
.dirA-multi { padding: 120px 56px; background: #fff; }
.dirA-multi-inner { max-width: 1180px; margin: 0 auto; }
.dirA-multi-head { margin-bottom: 56px; max-width: 760px; }
.dirA-multi-head h2 { font-size: 56px; letter-spacing: -0.03em; font-weight: 600; line-height: 1.04; margin: 0 0 18px; }
.dirA-multi-head .lede { font-size: 19px; color: #6e6e73; line-height: 1.55; }
.dirA-multi-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 56px; align-items: start; }
.dirA-multi-brief { background: #f5f5f7; border-radius: 24px; padding: 28px 30px; }
.dirA-multi-brief-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid rgba(0,0,0,0.06); }
.dirA-multi-brief-day { font-size: 13px; font-weight: 600; color: #1d1d1f; }
.dirA-multi-brief-date { font-size: 12px; color: #86868b; }
.dirA-multi-org-row { display: flex; gap: 14px; padding: 16px 0; border-bottom: 1px solid rgba(0,0,0,0.05); }
.dirA-multi-org-row:last-child { border-bottom: none; padding-bottom: 0; }
.dirA-multi-org-mark { width: 32px; height: 32px; border-radius: 9px; flex-shrink: 0; display: grid; place-items: center; color: #fff; font-weight: 700; font-size: 12px; letter-spacing: 0.02em; }
.dirA-multi-org-body { flex: 1; min-width: 0; }
.dirA-multi-org-name { font-size: 13px; font-weight: 600; color: #1d1d1f; margin-bottom: 6px; }
.dirA-multi-org-line { font-size: 12.5px; color: #424245; line-height: 1.55; padding: 2px 0; }
.dirA-multi-org-line b { font-weight: 500; }
.dirA-multi-orgs-strip { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.dirA-multi-org-pill { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px 5px 6px; border-radius: 999px; background: rgba(0,0,0,0.04); font-size: 12.5px; color: #1d1d1f; }
.dirA-multi-org-dot { width: 18px; height: 18px; border-radius: 5px; display: grid; place-items: center; color: #fff; font-size: 9px; font-weight: 700; }
.dirA-multi-feat { display: flex; flex-direction: column; gap: 18px; }
.dirA-multi-feat-item { display: flex; gap: 14px; }
.dirA-multi-feat-pip { width: 32px; height: 32px; border-radius: 10px; background: rgba(91,141,239,0.10); color: #5b8def; display: grid; place-items: center; flex-shrink: 0; }
.dirA-multi-feat-h { font-size: 15px; font-weight: 600; letter-spacing: -0.01em; margin-bottom: 4px; }
.dirA-multi-feat-d { font-size: 13.5px; color: #6e6e73; line-height: 1.55; }

/* ─────────────── Mobile (<=760px) ─────────────── */
@media (max-width: 760px) {
  .dirA-nav { padding: 14px 20px; }
  .dirA-nav-links { display: none; }
  .dirA-nav-cta { margin-left: auto; padding: 8px 16px; font-size: 13px; }

  .dirA-hero { padding: 64px 20px 32px; }
  .dirA-eyebrow { font-size: 11.5px; }
  .dirA-h1 { font-size: 44px; line-height: 1.05; margin-bottom: 20px; letter-spacing: -0.035em; }
  .dirA-sub { font-size: 16px; line-height: 1.5; margin-bottom: 24px; }
  .dirA-promise { gap: 6px; margin-bottom: 28px; flex-wrap: nowrap; justify-content: center; padding: 0 4px; }
  .dirA-promise-item { font-size: 11px; padding: 6px 10px 6px 9px; gap: 6px; }
  .dirA-promise-item svg { width: 12px; height: 12px; }
  .dirA-cta-row { flex-direction: column; gap: 10px; padding: 0 20px; }
  .dirA-cta { width: 100%; padding: 13px 22px; font-size: 14.5px; }

  /* Hero dash on mobile: drop sidebars, let main column fill the viewport */
  .dirA-dash-wrap { padding: 16px 12px 48px; }
  .dirA-dash-frame { width: 100%; transform: none; zoom: 1; }
  .dirA-dash-frame .exo-dash-overview { grid-template-columns: 1fr; font-size: 11.5px; }
  .dirA-dash-frame .exo-dash-sb,
  .dirA-dash-frame .exo-dash-rb { display: none; }
  .dirA-dash-frame .exo-dash-ov-main { padding: 14px 14px 16px; }
  .dirA-dash-frame .exo-dash-ov-grid { grid-template-columns: 1fr; }
  .dirA-dash-frame .exo-dash-ov-greeting { font-size: 18px; }
  .dirA-dash-frame .exo-dash-tb { padding: 0 12px; }
  .dirA-dash-frame .exo-dash-tb-right { gap: 6px; }
  .dirA-dash-frame .exo-dash-tb-org { font-size: 10px; padding: 3px 8px; }

  .dirA-section { padding: 64px 20px; }
  .dirA-section h2 { font-size: 32px; letter-spacing: -0.025em; line-height: 1.08; }
  .dirA-section .lede { font-size: 16px; margin-bottom: 36px; }

  .dirA-local { margin: 0 12px; padding: 72px 24px; border-radius: 24px; }
  .dirA-local h2 { font-size: 36px; letter-spacing: -0.025em; }
  .dirA-local .lede { font-size: 16px; margin-bottom: 32px; }
  .dirA-local-grid { grid-template-columns: 1fr; border-radius: 18px; }
  .dirA-local-cell { padding: 28px 22px; }
  .dirA-local-cell-h { font-size: 17px; }
  .dirA-local-cell-d { font-size: 13.5px; }

  .dirA-band { padding: 64px 20px; }
  .dirA-band-inner { grid-template-columns: 1fr; gap: 36px; }
  .dirA-band h2 { font-size: 32px; line-height: 1.1; }
  .dirA-band .lede { font-size: 16px; }

  .dirA-mock-band { padding: 56px 12px 64px; }
  .dirA-mock-head h2 { font-size: 30px; line-height: 1.1; }
  .dirA-mock-head .lede { font-size: 15.5px; }
  .dirA-mock-tabs { margin: 20px auto 24px; flex-wrap: wrap; padding: 5px; }
  .dirA-mock-tab { padding: 7px 14px; font-size: 12.5px; }
  .dirA-mock-stage { padding: 0 4px; }
  .dirA-mock-stage .exo-dash { zoom: 0.36; transform: none; }

  .dirA-perso { padding: 72px 20px; }
  .dirA-perso-head h2 { font-size: 32px; line-height: 1.08; }
  .dirA-perso-head .lede { font-size: 16px; }
  .dirA-perso-grid { grid-template-columns: 1fr; gap: 24px; }
  .dirA-contact-card { padding: 20px 22px; }
  .dirA-contact-kv { grid-template-columns: 88px 1fr; font-size: 12.5px; }
  .dirA-tone-body { padding: 18px 18px; min-height: 0; }
  .dirA-tone-text { font-size: 13.5px; }
  .dirA-tone-tab { padding: 8px 10px; font-size: 12px; }
  .dirA-tone-tab span:last-child { display: inline; }

  /* Grow — inline-style breakout undone for mobile */
  .dirA-perso .dirA-grow {
    margin-left: -20px !important;
    margin-right: -20px !important;
    width: calc(100% + 40px) !important;
    margin-top: 56px !important;
    margin-bottom: -72px !important;
    padding: 64px 24px;
  }
  .dirA-grow h2 { font-size: 30px; line-height: 1.1; }
  .dirA-grow .lede { font-size: 15.5px; margin-bottom: 36px; }
  .dirA-grow-steps { grid-template-columns: 1fr; gap: 12px; }
  .dirA-grow-step { padding: 20px 20px; }

  .dirA-multi { padding: 72px 20px; }
  .dirA-multi-head { margin-bottom: 36px; }
  .dirA-multi-head h2 { font-size: 32px; line-height: 1.08; }
  .dirA-multi-head .lede { font-size: 16px; }
  .dirA-multi-grid { grid-template-columns: 1fr; gap: 32px; }
  .dirA-multi-brief { padding: 22px 22px; border-radius: 20px; }
  .dirA-multi-orgs-strip { gap: 6px; }
  .dirA-multi-org-pill { font-size: 11.5px; padding: 4px 10px 4px 5px; }
  .dirA-multi-brief-head { flex-wrap: wrap; gap: 6px 10px; }
  .dirA-multi-brief-head > span:last-child { width: 100%; margin-left: 0 !important; }

  .dirA-stats { grid-template-columns: 1fr; padding: 64px 20px; gap: 36px; }
  .dirA-stat-n { font-size: 56px; }
  .dirA-stat-l { font-size: 13.5px; }

  .dirA-final { padding: 88px 20px; }
  .dirA-final h2 { font-size: 38px; letter-spacing: -0.025em; line-height: 1.06; margin-bottom: 22px; }
  .dirA-final p { font-size: 16px; margin-bottom: 28px; }
  .dirA-final .dirA-cta { width: auto; display: inline-block; }

  .dirA-foot { flex-direction: column; align-items: flex-start; gap: 18px; padding: 36px 24px; }
  .dirA-foot-links { margin-left: 0; flex-wrap: wrap; gap: 16px; }
}

/* very small phones */
@media (max-width: 380px) {
  .dirA-h1 { font-size: 38px; }
  .dirA-final h2 { font-size: 32px; }
  .dirA-section h2, .dirA-band h2, .dirA-perso-head h2, .dirA-multi-head h2 { font-size: 28px; }
}
    `}</style>

    <nav className="dirA-nav">
      <span className="exo-lockup">
        <img className="exo-lockup-mark" src={window.__resources ? window.__resources.markSvg : "mark.svg"} alt="" />
        <span className="exo-lockup-text" style={{ fontSize: 21 }}><span className="nm">exoteam</span><span className="sf">.ai</span></span>
      </span>
      <div className="dirA-nav-links">
        <a>Product</a><a>Helpers</a><a>Pricing</a><a>Docs</a>
      </div>
      <NavCTA />
    </nav>

    {/* ── HERO ── */}
    <section className="dirA-hero">
      <h1 className="dirA-h1">Your other <span className="em">selves</span>,<br/>at work.</h1>
      <p className="dirA-sub">Exoteam is a fast set of helpers that reads your inbox, drafts replies in <em style={{ fontStyle: 'normal', color: '#1d1d1f', fontWeight: 500 }}>your</em> voice for each relationship, scouts for fitting grants, and brings you a clear plan for the day. It grows with you.</p>
      <div className="dirA-promise">
        <span className="dirA-promise-item">
          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#34c759" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
          Runs 100% on your machine
        </span>
        <span className="dirA-promise-item">
          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#5b8def" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round"><path d="M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z"/><path d="M3 12h18"/><path d="M12 3a15 15 0 0 1 0 18M12 3a15 15 0 0 0 0 18"/></svg>
          Data stays in your company
        </span>
      </div>
      <div className="dirA-cta-row">
        <button className="dirA-cta primary">Book a call</button>
        <button className="dirA-cta ghost">See it work →</button>
      </div>
    </section>

    <div className="dirA-dash-wrap"><div className="dirA-dash-frame"><DashMock initial="overview" locked /></div></div>

    {/* ── SCROLL-DRIVEN LOGO ── */}
    <LogoScrollSection />

    {/* ── CHAT BAND ── */}
    <section className="dirA-band">
      <div className="dirA-band-inner">
        <div>
          <div className="dirA-eyebrow" style={{ marginBottom: 18 }}>Telegram, iMessage, or web</div>
          <h2>Your team in your pocket.</h2>
          <p className="lede">Skip the inbox. Ask for the brief, approve a draft, or send the next reply from a single chat. Voice notes work too. The whole conversation stays on your device.</p>
          <div style={{ display: 'flex', gap: 16, marginTop: 28, fontSize: 13.5, color: '#1d1d1f' }}>
            <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6 }}>
              <span style={{ width: 8, height: 8, borderRadius: 50, background: '#34c759' }}></span>
              End-to-end encrypted
            </span>
            <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6 }}>
              <span style={{ width: 8, height: 8, borderRadius: 50, background: '#5b8def' }}></span>
              Works offline
            </span>
          </div>
        </div>
        <div style={{ display: 'flex', justifyContent: 'center' }}><ChatAnimation /></div>
      </div>
    </section>

    {/* ── PERSONALIZATION ── */}
    <PersonalizationSection />

    {/* ── MULTI-ORG ── */}
    <MultiOrgSection />

    {/* ── INBOX MOCK SECTION (already shown above hero, here we go deeper into Grants + Dossier) ── */}
    <DeepMockups />

    {/* ── WORKSPACE INTEGRATIONS ── */}
    <WorkspaceSection />

    {/* ── CONVERGENCE ANIMATION ── */}
    <ConvergeAnimation />

    {/* ── BUNDLE PICKER (was pricing) ── */}
    <BundlePickerSection />

    {/* ── LOCAL/PRIVATE BAND ── */}
    <section className="dirA-local">
      <div className="dirA-eyebrow" style={{ color: '#5b8def', marginBottom: 18 }}>Privacy by architecture</div>
      <h2>Your inbox is yours.<br/>So is everything in it.</h2>
      <p className="lede">Exoteam runs on your laptop. Your emails, contacts, and drafts live with you — not on a server we own. There's nothing for us to leak, sell, or subpoena.</p>
      <div className="dirA-local-grid">
        <div className="dirA-local-cell">
          <div className="dirA-local-cell-icon">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>
          </div>
          <div className="dirA-local-cell-h">Local-first runtime</div>
          <div className="dirA-local-cell-d">Every helper runs in a process you own. Your inbox, your files, your calendar — they stay on your machine.</div>
        </div>
        <div className="dirA-local-cell">
          <div className="dirA-local-cell-icon" style={{ background: 'linear-gradient(135deg, rgba(224,122,176,0.20), rgba(232,158,91,0.20))', color: '#e07ab0' }}>
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
          </div>
          <div className="dirA-local-cell-h">Models that forget you</div>
          <div className="dirA-local-cell-d">AI inference runs through a hardened Vertex AI proxy. Zero retention, zero training. Your prompts disappear the moment the answer is back.</div>
        </div>
        <div className="dirA-local-cell">
          <div className="dirA-local-cell-icon" style={{ background: 'linear-gradient(135deg, rgba(93,185,138,0.20), rgba(91,141,239,0.20))', color: '#5db98a' }}>
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
          </div>
          <div className="dirA-local-cell-h">We don't have your data</div>
          <div className="dirA-local-cell-d">Exoteam runs no database of your work. No copies on our side, no shadow index, no analytics warehouse. Inspect the traffic yourself.</div>
        </div>
      </div>
    </section>

    <section className="dirA-final">
      <h2>You started a company to build something.<br/>So go build it.</h2>
      <p>30-minute call. We'll set up your team.</p>
      <button className="dirA-cta primary">Book a call →</button>
    </section>

    <footer className="dirA-foot">
      <span className="exo-lockup">
        <img className="exo-lockup-mark" src={window.__resources ? window.__resources.markSvg : "mark.svg"} alt="" style={{ width: 22, height: 22 }} />
        <span className="exo-lockup-text" style={{ fontSize: 16 }}><span className="nm">exoteam</span><span className="sf">.ai</span></span>
      </span>
      <div className="dirA-foot-links">
        <a>Product</a><a>Pricing</a><a>Docs</a><a>GitHub</a><a>Privacy</a>
      </div>
    </footer>
  </div>
);

// Tabbed switcher across the three product mockups
const DeepMockups = () => {
  const [tab, setTab] = React.useState('inbox');
  return (
    <section className="dirA-mock-band">
      <div className="dirA-mock-band-inner">
        <div className="dirA-mock-head">
          <div className="dirA-eyebrow" style={{ marginBottom: 14 }}>The work</div>
          <h2>Three quiet panels. Real work, done.</h2>
          <p className="lede">Each helper has its own surface. Same calm chrome, different job.</p>
        </div>
        <div className="dirA-mock-tabs">
          <button className={`dirA-mock-tab ${tab==='inbox'?'active':''}`}   onClick={() => setTab('inbox')}>Inbox</button>
          <button className={`dirA-mock-tab ${tab==='grants'?'active':''}`}  onClick={() => setTab('grants')}>Grants</button>
          <button className={`dirA-mock-tab ${tab==='outreach'?'active':''}`} onClick={() => setTab('outreach')}>Outreach dossier</button>
        </div>
        <div className="dirA-mock-stage">
          {tab === 'inbox'    && <DashMock initial="inbox" />}
          {tab === 'grants'   && <GrantsMock />}
          {tab === 'outreach' && <DossierMock />}
        </div>
      </div>
    </section>
  );
};

// Personalization — "it knows who you're writing to"
const PERSONA_CONTACTS = [
  {
    initials: 'HN', name: 'Helen Ng', role: 'Head of Digital, Tate',
    bg: 'linear-gradient(135deg, #5b8def, #7c69e0)',
    relationship: 'Warm · 4 threads',
    last: 'Mar 14 — runtime demo',
    style: 'Direct, prefers AM',
    notes: 'Asked about museum runtime licensing in Mar thread. Friday slots usually work.',
    tags: [{label: 'Customer', cls: ''}, {label: 'Warm intro', cls: 'warm'}, {label: 'Decision maker', cls: ''}]
  },
  {
    initials: 'JS', name: 'Juliet Sprake', role: 'Programme Lead, Goldsmiths',
    bg: 'linear-gradient(135deg, #e07ab0, #e89e5b)',
    relationship: 'Close · 11 threads',
    last: 'Yesterday — residency budget',
    style: 'Warm, informal, long replies',
    notes: 'Long-standing collaborator. References mutual research and shared students.',
    tags: [{label: 'Collaborator', cls: ''}, {label: 'Friend', cls: 'warm'}, {label: 'Repeat partner', cls: 'dim'}]
  },
  {
    initials: 'MR', name: 'Maja Rönnbäck', role: 'Curator, Stedelijk',
    bg: 'linear-gradient(135deg, #5db98a, #5b8def)',
    relationship: 'Cold · first reply',
    last: 'never — scouted Apr 2',
    style: 'Formal, concise, prefers Dutch context',
    notes: 'Scout candidate. Public talks emphasise community curation. No prior contact.',
    tags: [{label: 'Prospect', cls: 'dim'}, {label: 'Cold', cls: 'dim'}]
  },
];

const TONE_VARIANTS = {
  HN: {
    color: '#5b8def',
    meta: 'To Helen Ng · warm · 4 prior threads',
    text: 'Hi Helen,\n\nFriday 14:00 BST is held — I\'ll bring the runtime one-pager and a 5-minute demo. Want me to pull in Sarah from licensing, or keep it just us?\n\nMax',
    chips: ['Direct opener', 'Skips small talk', 'Refs Mar 14 demo']
  },
  JS: {
    color: '#e07ab0',
    meta: 'To Juliet Sprake · close · 11 prior threads',
    text: 'Juliet —\n\nWonderful news on the residency, thank you for pushing it through finance. September works on our side. Shall we lock the 14th–18th? I\'ll let the cohort know once we have a date.\n\nMax x',
    chips: ['First-name only', 'Warmth + signoff', 'Knows the cohort']
  },
  MR: {
    color: '#5db98a',
    meta: 'To Maja Rönnbäck · cold · no prior contact',
    text: 'Dear Maja,\n\nI hope this finds you well. I\'ve been following your work on community-led curation at Stedelijk and wanted to share a short note about Meadow — a runtime we\'ve built for participatory exhibitions.\n\nWould a 20-minute call in the coming weeks be welcome?\n\nKind regards,\nMax Celar',
    chips: ['Formal opener', 'Refs public work', 'Full signature']
  },
};

const PersonalizationSection = () => {
  const [sel, setSel] = React.useState('HN');
  const selContact = PERSONA_CONTACTS.find(c => c.initials === sel);
  const tone = TONE_VARIANTS[sel];
  return (
    <section className="dirA-perso">
      <div className="dirA-perso-inner">
        <div className="dirA-perso-head">
          <div className="dirA-eyebrow" style={{ marginBottom: 14 }}>Personalisation, by relationship</div>
          <h2>It knows who you're writing to.</h2>
          <p className="lede">Every contact has a quiet dossier behind them — prior threads, shared context, how you usually write to them. The same request becomes a different reply for Helen, Juliet, and a curator you've never met.</p>
        </div>

        <div className="dirA-perso-grid">
          <div className="dirA-contact-card">
            <div className="dirA-contact-head">
              <div className="dirA-contact-avatar" style={{ background: selContact.bg }}>{selContact.initials}</div>
              <div>
                <div className="dirA-contact-name">{selContact.name}</div>
                <div className="dirA-contact-role">{selContact.role}</div>
              </div>
            </div>
            <dl className="dirA-contact-kv">
              <dt>Relationship</dt><dd>{selContact.relationship}</dd>
              <dt>Last contact</dt><dd>{selContact.last}</dd>
              <dt>Your style</dt><dd>{selContact.style}</dd>
              <dt>Notes</dt><dd>{selContact.notes}</dd>
            </dl>
            <div className="dirA-contact-tags">
              {selContact.tags.map(t => <span key={t.label} className={`dirA-contact-tag ${t.cls}`}>{t.label}</span>)}
            </div>
          </div>

          <div className="dirA-tone-card">
            <div className="dirA-tone-tabs">
              {PERSONA_CONTACTS.map(c => (
                <button key={c.initials} className={`dirA-tone-tab ${sel === c.initials ? 'active' : ''}`} onClick={() => setSel(c.initials)}>
                  <span className="dirA-tone-tab-dot" style={{ background: TONE_VARIANTS[c.initials].color }}></span>
                  {c.name.split(' ')[0]}
                </button>
              ))}
            </div>
            <div className="dirA-tone-body">
              <div className="dirA-tone-meta">
                <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"/></svg>
                {tone.meta}
              </div>
              <div className="dirA-tone-text">{tone.text}</div>
              <div className="dirA-tone-foot">
                {tone.chips.map(c => <span key={c} className="dirA-tone-chip">{c}</span>)}
              </div>
            </div>
          </div>
        </div>
      </div>

      {/* Grows with you */}
      <div className="dirA-grow" style={{ marginTop: 96, marginLeft: '-56px', marginBottom: -120, width: 'calc(100% + 112px)', maxWidth: 'none' }}>
        <div className="dirA-grow-inner">
          <div className="dirA-eyebrow" style={{ marginBottom: 14 }}>It learns as you go</div>
          <h2>Helps you grow. Grows with you.</h2>
          <p className="lede">Every reply you send, every grant you pursue, every contact you keep — quietly feeds the next draft. The longer you use it, the more it sounds like you.</p>
          <div className="dirA-grow-steps">
            <div className="dirA-grow-step">
              <div className="pip">1</div>
              <div className="dirA-grow-step-n">Week one</div>
              <div className="dirA-grow-step-h">Reads your inbox</div>
              <div className="dirA-grow-step-d">Indexes your contacts, prior threads, your usual phrasing. Drafts cautiously, asks before sending.</div>
            </div>
            <div className="dirA-grow-step">
              <div className="pip">2</div>
              <div className="dirA-grow-step-n">Month one</div>
              <div className="dirA-grow-step-h">Learns your voice</div>
              <div className="dirA-grow-step-d">Picks up on tone per relationship. Stops flagging the obvious. Starts proposing whole replies.</div>
            </div>
            <div className="dirA-grow-step">
              <div className="pip">3</div>
              <div className="dirA-grow-step-n">Month three</div>
              <div className="dirA-grow-step-h">Spots what you'd miss</div>
              <div className="dirA-grow-step-d">Watches grants for fit. Surfaces dormant contacts at the right moment. Drafts the brief you'd have asked for.</div>
            </div>
            <div className="dirA-grow-step">
              <div className="pip">4</div>
              <div className="dirA-grow-step-n">Year one</div>
              <div className="dirA-grow-step-h">Becomes your team</div>
              <div className="dirA-grow-step-d">The chat replaces half your meetings. You ship more. You write less. You're still the one in charge.</div>
            </div>
          </div>
        </div>
      </div>
    </section>
  );
};

window.SiteA = SiteA;
window.PersonalizationSection = PersonalizationSection;

// Multi-org — founders running more than one company
const MULTI_ORGS = [
  { initials: 'SC', name: 'The Spatial Computing Company', bg: '#5b8def', tagline: 'XR / spatial' },
  { initials: 'UG', name: 'Untold Garden', bg: '#e07ab0', tagline: 'Creative studio' },
  { initials: 'TC', name: 'Temporary City', bg: '#5db98a', tagline: 'Urban projects' },
];

const MultiOrgSection = () => (
  <section className="dirA-multi">
    <div className="dirA-multi-inner">
      <div className="dirA-multi-head">
        <div className="dirA-eyebrow" style={{ marginBottom: 14 }}>For portfolio founders</div>
        <h2>Multiple inboxes.<br/>One morning brief.</h2>
        <p className="lede">If you're running more than one company, Exoteam knows it. Connect every inbox, calendar, and account once — then read a single coherent plan for the day, with each thread already tagged to the right org.</p>
      </div>

      <div className="dirA-multi-grid">
        <div className="dirA-multi-brief">
          <div className="dirA-multi-orgs-strip">
            {MULTI_ORGS.map(o => (
              <span key={o.initials} className="dirA-multi-org-pill">
                <span className="dirA-multi-org-dot" style={{ background: o.bg }}>{o.initials}</span>
                {o.name}
              </span>
            ))}
          </div>
          <div className="dirA-multi-brief-head">
            <span className="dirA-multi-brief-day">Thursday’s brief</span>
            <span className="dirA-multi-brief-date">2 May · 07:00</span>
            <span style={{ marginLeft: 'auto', fontSize: 11, color: '#86868b' }}>3 orgs · 4 inboxes · 2 calendars</span>
          </div>
          <div className="dirA-multi-org-row">
            <div className="dirA-multi-org-mark" style={{ background: '#5b8def' }}>SC</div>
            <div className="dirA-multi-org-body">
              <div className="dirA-multi-org-name">The Spatial Computing Company</div>
              <div className="dirA-multi-org-line">· <b>Series A check-in</b> with Sequoia at 10:00 — deck refresh ready</div>
              <div className="dirA-multi-org-line">· 2 draft replies pending (Helen Ng, Stripe support)</div>
            </div>
          </div>
          <div className="dirA-multi-org-row">
            <div className="dirA-multi-org-mark" style={{ background: '#e07ab0' }}>UG</div>
            <div className="dirA-multi-org-body">
              <div className="dirA-multi-org-name">Untold Garden</div>
              <div className="dirA-multi-org-line">· <b>Horizon Europe</b> grant due in 12 days — outline drafted</div>
              <div className="dirA-multi-org-line">· Tate runtime call confirmed Friday 14:00</div>
            </div>
          </div>
          <div className="dirA-multi-org-row">
            <div className="dirA-multi-org-mark" style={{ background: '#5db98a' }}>TC</div>
            <div className="dirA-multi-org-body">
              <div className="dirA-multi-org-name">Temporary City</div>
              <div className="dirA-multi-org-line">· Quiet day — invoicing chase queued for Friday</div>
            </div>
          </div>
        </div>

        <div className="dirA-multi-feat">
          <div className="dirA-multi-feat-item">
            <div className="dirA-multi-feat-pip">
              <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></svg>
            </div>
            <div>
              <div className="dirA-multi-feat-h">One brain, many Workspaces</div>
              <div className="dirA-multi-feat-d">Every thread, contact, and grant gets tagged to the right company on arrival. Switch focus to one org, or zoom out to the whole portfolio.</div>
            </div>
          </div>
          <div className="dirA-multi-feat-item">
            <div className="dirA-multi-feat-pip" style={{ background: 'rgba(224,122,176,0.12)', color: '#e07ab0' }}>
              <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><path d="M20 8v6M23 11h-6"/></svg>
            </div>
            <div>
              <div className="dirA-multi-feat-h">Right voice, right org</div>
              <div className="dirA-multi-feat-d">Spatial Computing writes terse and technical. Untold Garden writes warm and curatorial. The same helper speaks both — because it knows which hat you're wearing.</div>
            </div>
          </div>
          <div className="dirA-multi-feat-item">
            <div className="dirA-multi-feat-pip" style={{ background: 'rgba(93,185,138,0.12)', color: '#5db98a' }}>
              <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>
            </div>
            <div>
              <div className="dirA-multi-feat-h">Calendars that don't double-book you</div>
              <div className="dirA-multi-feat-d">Holds across every org's calendar at once. Sees the Sequoia call before scheduling an Untold Garden demo. You stop apologising for clashes.</div>
            </div>
          </div>
          <div className="dirA-multi-feat-item">
            <div className="dirA-multi-feat-pip" style={{ background: 'rgba(232,158,91,0.12)', color: '#e89e5b' }}>
              <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
            </div>
            <div>
              <div className="dirA-multi-feat-h">Audit trails per company</div>
              <div className="dirA-multi-feat-d">Every action is attributed to the company it was taken for. Clean books, clean separation — even when it's all one founder behind the curtain.</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </section>
);

window.MultiOrgSection = MultiOrgSection;
