/* @ds-bundle: {"format":3,"namespace":"WiggleverseDesignSystem_94cd80","components":[{"name":"BrandLockup","sourcePath":"components/brand/BrandLockup.jsx"},{"name":"BuildCard","sourcePath":"components/cards/BuildCard.jsx"},{"name":"PathCard","sourcePath":"components/cards/PathCard.jsx"},{"name":"Button","sourcePath":"components/core/Button.jsx"},{"name":"Callout","sourcePath":"components/core/Callout.jsx"},{"name":"Eyebrow","sourcePath":"components/core/Eyebrow.jsx"},{"name":"Notice","sourcePath":"components/core/Notice.jsx"},{"name":"Soul","sourcePath":"components/core/Soul.jsx"},{"name":"Tag","sourcePath":"components/core/Tag.jsx"},{"name":"SiteFooter","sourcePath":"components/navigation/SiteFooter.jsx"},{"name":"SiteHeader","sourcePath":"components/navigation/SiteHeader.jsx"}],"sourceHashes":{"components/brand/BrandLockup.jsx":"70ef76a92b84","components/cards/BuildCard.jsx":"f4588d77bd79","components/cards/PathCard.jsx":"f8779016b751","components/core/Button.jsx":"58601f356762","components/core/Callout.jsx":"4347df19558c","components/core/Eyebrow.jsx":"38c0374f060f","components/core/Notice.jsx":"471101cf1c07","components/core/Soul.jsx":"d1b2ddeea071","components/core/Tag.jsx":"192ca2a7e57d","components/navigation/SiteFooter.jsx":"61fbdd9cf145","components/navigation/SiteHeader.jsx":"6541bfe8e43a","ui_kits/wiggleverse-www/app.jsx":"f0cea1954d57"},"inlinedExternals":[],"unexposedExports":[]} */

(() => {

const __ds_ns = (window.WiggleverseDesignSystem_94cd80 = window.WiggleverseDesignSystem_94cd80 || {});

const __ds_scope = {};

(__ds_ns.__errors = __ds_ns.__errors || []);

// components/brand/BrandLockup.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse BrandLockup — the mark + "Wiggleverse" wordmark, linked home.
 * 'primary' uses the gradient mark on dark; 'footer' uses the mono-gold mark;
 * 'onLight' uses the ink mark for paper. Wordmark is Space Grotesk 700, never italic.
 */
function BrandLockup({
  variant = 'primary',
  size = 34,
  href = '/',
  showWordmark = true,
  assetBase = '/assets',
  ...rest
}) {
  const marks = {
    primary: 'wiggleverse-mark.svg',
    footer: 'mark-mono-gold.svg',
    onLight: 'mark-on-light.svg'
  };
  const wordColor = variant === 'onLight' ? 'var(--wv-ink)' : 'var(--wv-starlight)';
  // Resolve asset relative to the given base so the lockup works from any depth.
  const src = `${assetBase}/${marks[variant] || marks.primary}`;
  return /*#__PURE__*/React.createElement("a", _extends({
    href: href,
    "aria-label": "Wiggleverse home",
    style: {
      display: 'inline-flex',
      alignItems: 'center',
      gap: '.55rem',
      textDecoration: 'none'
    }
  }, rest), /*#__PURE__*/React.createElement("img", {
    src: src,
    alt: "",
    width: size,
    height: size,
    style: {
      width: size,
      height: size
    }
  }), showWordmark && /*#__PURE__*/React.createElement("span", {
    style: {
      fontFamily: 'var(--wv-font-display)',
      fontWeight: 'var(--weight-bold)',
      fontSize: `${Math.round(size * 0.0338 * 10) / 10}rem`,
      letterSpacing: 'var(--tracking-display)',
      color: wordColor
    }
  }, "Wiggleverse"));
}
Object.assign(__ds_scope, { BrandLockup });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/brand/BrandLockup.jsx", error: String((e && e.message) || e) }); }

// components/cards/BuildCard.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse BuildCard — a portfolio item on a paper section. White card with
 * a violet hairline, a status Tag, title, and copy. Built for light backgrounds.
 */
function BuildCard({
  tag,
  title,
  children,
  ...rest
}) {
  return /*#__PURE__*/React.createElement("div", _extends({
    style: {
      padding: '1.4rem',
      borderRadius: 'var(--radius-card)',
      border: '1px solid rgba(124,111,224,.3)',
      background: 'var(--surface-card-light)'
    }
  }, rest), tag && /*#__PURE__*/React.createElement("div", {
    style: {
      marginBottom: '.6rem'
    }
  }, tag), /*#__PURE__*/React.createElement("h3", {
    style: {
      fontFamily: 'var(--wv-font-display)',
      fontWeight: 'var(--weight-bold)',
      fontSize: 'var(--text-h3)',
      margin: '0 0 .35rem',
      color: 'var(--wv-ink)',
      letterSpacing: 'var(--tracking-display)'
    }
  }, title), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: 0,
      fontSize: 'var(--text-small)',
      lineHeight: 1.55,
      color: 'var(--text-on-light-soft)'
    }
  }, children));
}
Object.assign(__ds_scope, { BuildCard });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/cards/BuildCard.jsx", error: String((e && e.message) || e) }); }

// components/cards/PathCard.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse PathCard — the audience-router doorway. A raised indigo card with
 * a glyph icon, title, and one line of copy. Hover lifts -3px and the border
 * warms to lilac. 'first' gives it a gold border (the recommended door).
 */
function PathCard({
  icon,
  title,
  children,
  href = '#',
  first = false,
  ...rest
}) {
  const [hover, setHover] = React.useState(false);
  return /*#__PURE__*/React.createElement("a", _extends({
    href: href,
    onMouseEnter: () => setHover(true),
    onMouseLeave: () => setHover(false),
    style: {
      display: 'block',
      padding: '1.2rem',
      borderRadius: 'var(--radius-card)',
      background: hover ? 'var(--surface-raised-hi)' : 'var(--surface-raised)',
      border: `1px solid ${first ? 'var(--wv-gold)' : hover ? 'var(--wv-lilac)' : 'var(--border-card)'}`,
      color: 'var(--wv-starlight)',
      textDecoration: 'none',
      transform: hover ? 'var(--lift-3)' : 'none',
      transition: 'transform var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease)'
    }
  }, rest), icon && /*#__PURE__*/React.createElement("div", {
    "aria-hidden": "true",
    style: {
      fontSize: '1.5rem'
    }
  }, icon), /*#__PURE__*/React.createElement("h3", {
    style: {
      fontFamily: 'var(--wv-font-display)',
      fontWeight: 'var(--weight-bold)',
      fontSize: 'var(--text-h3)',
      margin: '.5rem 0 .25rem',
      color: 'var(--wv-starlight)',
      letterSpacing: 'var(--tracking-display)'
    }
  }, title), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: 0,
      fontSize: 'var(--text-fine)',
      lineHeight: 1.5,
      color: 'var(--wv-starlight-78)'
    }
  }, children));
}
Object.assign(__ds_scope, { PathCard });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/cards/PathCard.jsx", error: String((e && e.message) || e) }); }

// components/core/Button.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse Button — pill action in the machine register (Space Grotesk 500).
 * Primary = gold horizon CTA; ghost = lilac-outlined. Hover lifts -1px (never a shadow).
 */
function Button({
  children,
  variant = 'primary',
  href,
  onLight = false,
  disabled = false,
  type = 'button',
  onClick,
  ...rest
}) {
  const base = {
    display: 'inline-flex',
    alignItems: 'center',
    gap: '.4em',
    fontFamily: 'var(--wv-font-display)',
    fontWeight: 'var(--weight-medium)',
    fontSize: 'var(--text-body)',
    lineHeight: 1,
    padding: '.7rem 1.25rem',
    borderRadius: 'var(--radius-pill)',
    border: 'var(--btn-border-w) solid transparent',
    cursor: disabled ? 'not-allowed' : 'pointer',
    textDecoration: 'none',
    opacity: disabled ? 0.5 : 1,
    transition: 'transform var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease)'
  };
  const variants = {
    primary: {
      background: 'var(--cta)',
      color: 'var(--cta-text)'
    },
    ghost: {
      background: 'transparent',
      borderColor: onLight ? 'var(--wv-violet)' : 'var(--wv-lilac)',
      color: onLight ? 'var(--wv-ink)' : 'var(--wv-starlight)'
    }
  };
  const style = {
    ...base,
    ...(variants[variant] || variants.primary)
  };
  const handleEnter = e => {
    if (!disabled) e.currentTarget.style.transform = 'var(--lift-1)';
  };
  const handleLeave = e => {
    e.currentTarget.style.transform = 'none';
  };
  const common = {
    style,
    onMouseEnter: handleEnter,
    onMouseLeave: handleLeave,
    ...rest
  };
  if (href && !disabled) {
    return /*#__PURE__*/React.createElement("a", _extends({
      href: href,
      onClick: onClick
    }, common), children);
  }
  return /*#__PURE__*/React.createElement("button", _extends({
    type: type,
    disabled: disabled,
    onClick: onClick
  }, common), children);
}
Object.assign(__ds_scope, { Button });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Button.jsx", error: String((e && e.message) || e) }); }

// components/core/Eyebrow.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse Eyebrow — uppercase, letter-spaced kicker in the machine register
 * that sits above a section heading. Lilac on dark, violet on paper.
 */
function Eyebrow({
  children,
  onLight = false,
  as = 'p',
  ...rest
}) {
  const Tag = as;
  return /*#__PURE__*/React.createElement(Tag, _extends({
    style: {
      fontFamily: 'var(--wv-font-display)',
      fontWeight: 'var(--weight-medium)',
      fontSize: 'var(--text-eyebrow)',
      letterSpacing: 'var(--tracking-eyebrow)',
      textTransform: 'uppercase',
      color: onLight ? 'var(--wv-violet)' : 'var(--wv-lilac)',
      margin: '0 0 1rem'
    }
  }, rest), children);
}
Object.assign(__ds_scope, { Eyebrow });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Eyebrow.jsx", error: String((e && e.message) || e) }); }

// components/core/Notice.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse Notice — a hollow gold pill set inline beside a heading to mark
 * roadmap status ("In build", "Coming"). Quieter than a filled Tag.
 */
function Notice({
  children,
  ...rest
}) {
  return /*#__PURE__*/React.createElement("span", _extends({
    style: {
      display: 'inline-block',
      fontFamily: 'var(--wv-font-display)',
      fontSize: '.82rem',
      fontWeight: 'var(--weight-medium)',
      letterSpacing: 'var(--tracking-notice)',
      textTransform: 'uppercase',
      color: 'var(--wv-gold)',
      border: '1px solid var(--wv-gold-40)',
      borderRadius: 'var(--radius-pill)',
      padding: '.25rem .8rem',
      verticalAlign: 'middle'
    }
  }, rest), children);
}
Object.assign(__ds_scope, { Notice });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Notice.jsx", error: String((e && e.message) || e) }); }

// components/core/Soul.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse Soul — the human register. Fraunces ITALIC ONLY, used sparingly
 * for the lines that carry conscience (taglines, pull-quotes). Gold by default
 * (hero/page-hero) or starlight/ink when 'plain'.
 */
function Soul({
  children,
  size = 'md',
  tone = 'gold',
  onLight = false,
  as = 'span',
  ...rest
}) {
  const Tag = as;
  const sizes = {
    sm: '1.1rem',
    md: 'var(--text-soul)',
    /* clamp(1.2rem, 2.4vw, 1.7rem) */
    lg: 'clamp(1.4rem, 3vw, 2rem)'
  };
  const tones = {
    gold: 'var(--wv-gold)',
    plain: onLight ? 'var(--wv-ink)' : 'var(--wv-starlight)',
    lilac: 'var(--wv-lilac)'
  };
  return /*#__PURE__*/React.createElement(Tag, _extends({
    style: {
      fontFamily: 'var(--wv-font-human)',
      fontStyle: 'italic',
      fontWeight: 'var(--weight-soul)',
      fontSize: sizes[size] || sizes.md,
      lineHeight: 1.3,
      color: tones[tone] || tones.gold
    }
  }, rest), children);
}
Object.assign(__ds_scope, { Soul });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Soul.jsx", error: String((e && e.message) || e) }); }

// components/core/Callout.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse Callout — a gold left-rule framing a single conscience line.
 * No box, no fill: just a 3px gold border and a Fraunces italic quote.
 */
function Callout({
  children,
  onLight = false,
  ...rest
}) {
  return /*#__PURE__*/React.createElement("div", _extends({
    style: {
      borderLeft: '3px solid var(--wv-gold)',
      padding: '.4rem 0 .4rem 1.1rem',
      margin: '1.5rem 0'
    }
  }, rest), /*#__PURE__*/React.createElement(__ds_scope.Soul, {
    size: "lg",
    tone: "plain",
    onLight: onLight,
    as: "p",
    style: {
      margin: 0
    }
  }, children));
}
Object.assign(__ds_scope, { Callout });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Callout.jsx", error: String((e && e.message) || e) }); }

// components/core/Tag.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
 * Wiggleverse Tag — small filled pill marking a product's status on cards.
 * 'live' = lilac tint (first product); 'soon' = gold tint (coming).
 */
function Tag({
  children,
  variant = 'live',
  onLight = false,
  ...rest
}) {
  const base = {
    display: 'inline-block',
    fontFamily: 'var(--wv-font-display)',
    fontSize: 'var(--text-tag)',
    fontWeight: 'var(--weight-medium)',
    letterSpacing: 'var(--tracking-tag)',
    textTransform: 'uppercase',
    padding: '.15rem .55rem',
    borderRadius: 'var(--radius-pill)'
  };
  const variants = {
    live: {
      background: 'var(--wv-lilac-16)',
      color: onLight ? 'var(--wv-ink)' : 'var(--wv-starlight)'
    },
    soon: {
      background: 'var(--wv-gold-28)',
      color: 'var(--wv-gold-ink-soft)'
    }
  };
  return /*#__PURE__*/React.createElement("span", _extends({
    style: {
      ...base,
      ...(variants[variant] || variants.live)
    }
  }, rest), children);
}
Object.assign(__ds_scope, { Tag });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/core/Tag.jsx", error: String((e && e.message) || e) }); }

// components/navigation/SiteFooter.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
const DEFAULT_COLUMNS = [{
  heading: 'Explore',
  links: [{
    label: 'Build',
    href: '/building/'
  }, {
    label: 'Partner',
    href: '/partner/'
  }, {
    label: 'Learn',
    href: '/learn/'
  }]
}, {
  heading: 'The org',
  links: [{
    label: 'About',
    href: '/about/'
  }, {
    label: 'Give',
    href: '/give/'
  }, {
    label: 'Finances',
    href: '/finances/'
  }, {
    label: 'Code of Conduct',
    href: '/code-of-conduct/'
  }]
}];
const DEFAULT_LEGAL = "Wiggleverse.org, Inc. — a Washington 501(c)(3) nonprofit creating art and software that supports humanity on the path to world peace. Dedicated to Aaron Swartz, who believed knowledge belongs to everyone.";

/**
 * Wiggleverse SiteFooter — deepest ground (night). Mono-gold lockup, a lilac
 * Soul tagline, link columns, and the dedication legal line.
 */
function SiteFooter({
  columns = DEFAULT_COLUMNS,
  tagline = 'We are verbs, not nouns.',
  legal = DEFAULT_LEGAL,
  assetBase = '/assets',
  ...rest
}) {
  const wrap = {
    width: 'min(var(--wrap-max), 92vw)',
    margin: '0 auto'
  };
  return /*#__PURE__*/React.createElement("footer", _extends({
    style: {
      background: 'var(--surface-footer)',
      borderTop: '1px solid var(--border-soft)',
      padding: '3rem 0 2.5rem',
      fontSize: '.92rem'
    }
  }, rest), /*#__PURE__*/React.createElement("div", {
    style: {
      ...wrap,
      display: 'flex',
      flexWrap: 'wrap',
      gap: '2rem 3rem',
      justifyContent: 'space-between'
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      maxWidth: '22rem'
    }
  }, /*#__PURE__*/React.createElement(__ds_scope.BrandLockup, {
    variant: "footer",
    size: 30,
    assetBase: assetBase
  }), /*#__PURE__*/React.createElement(__ds_scope.Soul, {
    size: "sm",
    tone: "lilac",
    as: "span",
    style: {
      display: 'block',
      marginTop: '.6rem'
    }
  }, tagline)), columns.map(col => /*#__PURE__*/React.createElement("div", {
    key: col.heading
  }, /*#__PURE__*/React.createElement("h4", {
    style: {
      fontFamily: 'var(--wv-font-display)',
      fontSize: '.8rem',
      letterSpacing: '.1em',
      textTransform: 'uppercase',
      color: 'var(--wv-lilac)',
      margin: '0 0 .7rem'
    }
  }, col.heading), /*#__PURE__*/React.createElement("ul", {
    style: {
      listStyle: 'none',
      margin: 0,
      padding: 0
    }
  }, col.links.map(l => /*#__PURE__*/React.createElement("li", {
    key: l.href,
    style: {
      marginBottom: '.45rem'
    }
  }, /*#__PURE__*/React.createElement("a", {
    href: l.href,
    style: {
      color: 'var(--wv-starlight-85)',
      textDecoration: 'none'
    }
  }, l.label))))))), /*#__PURE__*/React.createElement("div", {
    style: {
      ...wrap,
      marginTop: '2.2rem',
      paddingTop: '1.3rem',
      borderTop: '1px solid var(--wv-lilac-12)',
      color: 'var(--wv-starlight-60)',
      fontSize: '.85rem'
    }
  }, legal));
}
Object.assign(__ds_scope, { SiteFooter });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/navigation/SiteFooter.jsx", error: String((e && e.message) || e) }); }

// components/navigation/SiteHeader.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
const DEFAULT_LINKS = [{
  label: 'About',
  href: '/about/'
}, {
  label: 'Build',
  href: '/building/'
}, {
  label: 'Partner',
  href: '/partner/'
}, {
  label: 'Learn',
  href: '/learn/'
}, {
  label: 'Give',
  href: '/give/'
}];

/**
 * Wiggleverse SiteHeader — sticky glass nav: brand lockup + machine-register
 * links. Translucent midnight with a blur and a lilac hairline underneath.
 */
function SiteHeader({
  links = DEFAULT_LINKS,
  current,
  assetBase = '/assets',
  homeHref = '/',
  ...rest
}) {
  return /*#__PURE__*/React.createElement("header", _extends({
    style: {
      position: 'sticky',
      top: 0,
      zIndex: 50,
      background: 'var(--glass-sky)',
      backdropFilter: 'blur(var(--glass-blur))',
      WebkitBackdropFilter: 'blur(var(--glass-blur))',
      borderBottom: '1px solid var(--border-soft)'
    }
  }, rest), /*#__PURE__*/React.createElement("div", {
    style: {
      width: 'min(var(--wrap-max), 92vw)',
      margin: '0 auto',
      display: 'flex',
      alignItems: 'center',
      justifyContent: 'space-between',
      gap: '1rem',
      padding: '.7rem 0'
    }
  }, /*#__PURE__*/React.createElement(__ds_scope.BrandLockup, {
    variant: "primary",
    assetBase: assetBase,
    href: homeHref
  }), /*#__PURE__*/React.createElement("nav", null, /*#__PURE__*/React.createElement("ul", {
    style: {
      display: 'flex',
      alignItems: 'center',
      gap: '1.2rem',
      listStyle: 'none',
      margin: 0,
      padding: 0
    }
  }, links.map(l => {
    const isCurrent = current === l.href || current === l.label;
    return /*#__PURE__*/React.createElement("li", {
      key: l.href
    }, /*#__PURE__*/React.createElement("a", {
      href: l.href,
      "aria-current": isCurrent ? 'page' : undefined,
      style: {
        fontFamily: 'var(--wv-font-display)',
        fontWeight: 'var(--weight-medium)',
        fontSize: '.95rem',
        color: l.cta ? 'var(--wv-gold)' : 'var(--wv-starlight)',
        textDecoration: isCurrent ? 'underline' : 'none',
        textUnderlineOffset: '4px',
        textDecorationColor: 'var(--wv-lilac)'
      }
    }, l.label));
  })))));
}
Object.assign(__ds_scope, { SiteHeader });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/navigation/SiteHeader.jsx", error: String((e && e.message) || e) }); }

// ui_kits/wiggleverse-www/app.jsx
try { (() => {
/* Wiggleverse marketing-site recreation. Composes the DS components and routes
   between screens by intercepting in-app anchor clicks. */
const {
  Button,
  Tag,
  Notice,
  Eyebrow,
  Soul,
  Callout,
  PathCard,
  BuildCard,
  SiteHeader,
  SiteFooter
} = window.WiggleverseDesignSystem_94cd80;
const ASSET_BASE = '../../assets';
const NAV = [{
  label: 'About',
  href: '#/about'
}, {
  label: 'Build',
  href: '#/ecomm'
}, {
  label: 'Partner',
  href: '#/about'
}, {
  label: 'Learn',
  href: '#/finances'
}, {
  label: 'Give',
  href: '#/finances',
  cta: true
}];
const FOOTER_COLS = [{
  heading: 'Explore',
  links: [{
    label: 'Build',
    href: '#/ecomm'
  }, {
    label: 'Partner',
    href: '#/about'
  }, {
    label: 'Learn',
    href: '#/finances'
  }]
}, {
  heading: 'The org',
  links: [{
    label: 'About',
    href: '#/about'
  }, {
    label: 'Give',
    href: '#/finances'
  }, {
    label: 'Finances',
    href: '#/finances'
  }, {
    label: 'Code of Conduct',
    href: '#/about'
  }]
}];

/* ---------- Home ---------- */
function HomeScreen() {
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("section", {
    className: "hero"
  }, /*#__PURE__*/React.createElement("div", {
    className: "hero__sky",
    "aria-hidden": "true"
  }, /*#__PURE__*/React.createElement("img", {
    className: "hero__mark",
    src: ASSET_BASE + '/wiggleverse-mark.svg',
    alt: ""
  })), /*#__PURE__*/React.createElement("div", {
    className: "wrap"
  }, /*#__PURE__*/React.createElement("div", {
    className: "hero__inner"
  }, /*#__PURE__*/React.createElement(Eyebrow, null, "A 501(c)(3) nonprofit \xB7 art & software for a world at peace"), /*#__PURE__*/React.createElement("h1", null, "Ethical alternatives to the software that connects you to other humans."), /*#__PURE__*/React.createElement(Soul, {
    size: "md",
    as: "span",
    className: "hero__soul"
  }, "Treat humans as humans \u2014 everything else follows."), /*#__PURE__*/React.createElement("p", {
    className: "lead"
  }, "A wise world where people and machines build together on one shared set of ethics. Low-cost commerce for small businesses. Tools for moving toward agreement on shared meaning. A place where, if you're learning, you're succeeding."), /*#__PURE__*/React.createElement("div", {
    className: "hero__cta"
  }, /*#__PURE__*/React.createElement(Button, {
    variant: "primary",
    href: "#/about"
  }, "Why Wiggleverse \u2192"), /*#__PURE__*/React.createElement(Button, {
    variant: "ghost",
    href: "#/ecomm"
  }, "See what we're building"))))), /*#__PURE__*/React.createElement("section", {
    className: "section"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap"
  }, /*#__PURE__*/React.createElement(Eyebrow, null, "Find your way in"), /*#__PURE__*/React.createElement("h2", null, "I'm here as a\u2026"), /*#__PURE__*/React.createElement("p", {
    className: "lead"
  }, "Wiggleverse is an umbrella. Pick the door that fits \u2014 each leads to its own part of the world."), /*#__PURE__*/React.createElement("div", {
    className: "router__grid"
  }, /*#__PURE__*/React.createElement(PathCard, {
    icon: "\u2727",
    title: "Curious human",
    href: "#/about",
    first: true
  }, "What is this, and why does it matter? Start with the story."), /*#__PURE__*/React.createElement(PathCard, {
    icon: "\u25C7",
    title: "Small business",
    href: "#/ecomm"
  }, "People and families who join, sell, and contribute. Near-zero-cost commerce."), /*#__PURE__*/React.createElement(PathCard, {
    icon: "\u25C8",
    title: "Builder",
    href: "#/about"
  }, "A developer who wants to build ethical software? We'd love your help."), /*#__PURE__*/React.createElement(PathCard, {
    icon: "\u274D",
    title: "Funder",
    href: "#/finances"
  }, "Donors, foundations, and grantmakers supporting a 501(c)(3) at work.")))), /*#__PURE__*/React.createElement("section", {
    className: "section section--paper"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap"
  }, /*#__PURE__*/React.createElement(Eyebrow, {
    onLight: true
  }, "One set of principles, many alternatives"), /*#__PURE__*/React.createElement("h2", null, "What we're building"), /*#__PURE__*/React.createElement("p", {
    className: "lead"
  }, "Ethical alternatives to the platforms people rely on every day \u2014 every one built on the same shared set of principles."), /*#__PURE__*/React.createElement("div", {
    className: "build__grid"
  }, /*#__PURE__*/React.createElement(BuildCard, {
    tag: /*#__PURE__*/React.createElement(Tag, {
      variant: "live",
      onLight: true
    }, "First product"),
    title: "Ecomm"
  }, "Shopify-class commerce at near-zero cost, for people and families \u2014 because small businesses are really just people. ", /*#__PURE__*/React.createElement("a", {
    href: "#/ecomm"
  }, "Why ecomm first \u2192")), /*#__PURE__*/React.createElement(BuildCard, {
    tag: /*#__PURE__*/React.createElement(Tag, {
      variant: "soon"
    }, "Coming"),
    title: "Apps"
  }, "A branded mobile app of their own for every small business \u2014 so they meet their people directly, instead of renting space inside someone else's platform."), /*#__PURE__*/React.createElement(BuildCard, {
    tag: /*#__PURE__*/React.createElement(Tag, {
      variant: "soon"
    }, "Coming"),
    title: "Learn"
  }, "A place where anyone \u2014 including small businesses who share our ethics \u2014 can post educational content that's true, right-sized, and actually teaches.")))), /*#__PURE__*/React.createElement("section", {
    className: "section"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap"
  }, /*#__PURE__*/React.createElement(Eyebrow, null, "Open Core \xB7 a partner ecosystem"), /*#__PURE__*/React.createElement("h2", null, "Built on an open core"), /*#__PURE__*/React.createElement("p", {
    className: "lead"
  }, "The platform's core is open \u2014 anyone can inspect it, extend it, and build on it. Because no two businesses run the same way, we don't sell one-size-fits-all \u2014 we grow a partner ecosystem that builds software shaped to the work it's actually for."), /*#__PURE__*/React.createElement("div", {
    className: "router__grid"
  }, /*#__PURE__*/React.createElement(PathCard, {
    icon: "\u25D0",
    title: "Partner",
    href: "#/about",
    first: true
  }, "Build custom software on an open platform \u2014 value flowing to the builders and the served, never extracted by a platform in the middle. Why custom-on-open is the future \u2192")))));
}

/* ---------- About ---------- */
function AboutScreen() {
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("section", {
    className: "page-hero"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap"
  }, /*#__PURE__*/React.createElement(Eyebrow, null, "About"), /*#__PURE__*/React.createElement("h1", null, "The era of infinite alternatives"), /*#__PURE__*/React.createElement(Soul, {
    size: "md",
    as: "p",
    className: "page-hero__soul"
  }, "Welcome to the Wiggleverse."), /*#__PURE__*/React.createElement("p", {
    className: "lead"
  }, "We've entered an era of alternatives \u2014 infinite alternatives. Wiggleverse exists to build the humane ones: ethical alternatives to the platforms people use every day, kept low-cost and high-value, in service of human flourishing."))), /*#__PURE__*/React.createElement("section", {
    className: "section"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap prose"
  }, /*#__PURE__*/React.createElement("h2", null, "Now it's the platforms"), /*#__PURE__*/React.createElement("p", null, "With large language models, we've entered the era where the platforms themselves are being commoditized \u2014 and with them comes a world of infinite alternatives for software. One genuinely skilled developer can now do what would have taken ten of them a year ago. The things everyone assumed were permanent fixtures are suddenly open to alternatives."), /*#__PURE__*/React.createElement("h2", null, "The moats are becoming anchors"), /*#__PURE__*/React.createElement("p", null, "The large platforms have thrived on three moats: the manpower and capital to run software at scale, vendor lock-in, and the network effect. My hypothesis is that the first is turning into an anchor, the second is dissolving as custom migration code gets cheap, and the third is already fragmented."), /*#__PURE__*/React.createElement("h2", null, "What Wiggleverse is for"), /*#__PURE__*/React.createElement("p", null, "None of this is about taking anyone's place. Wiggleverse exists to offer ethical alternatives to platforms like Shopify, YouTube, Facebook, and Instagram \u2014 rooted in ethics, built to give people value rather than to extract it."), /*#__PURE__*/React.createElement(Callout, null, "The intention isn't to take as much as we can from people \u2014 it's to give as much value as we can to everyone."), /*#__PURE__*/React.createElement("p", null, "Welcome to the Wiggleverse, and welcome to the era of infinite alternatives \u2014 even to the platforms everyone assumed were permanent."), /*#__PURE__*/React.createElement(Soul, {
    size: "sm",
    tone: "plain",
    as: "p",
    style: {
      marginTop: '1.5rem'
    }
  }, "\u2014 Ben Stull, Founder"))));
}

/* ---------- Ecomm ---------- */
function EcommScreen() {
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("section", {
    className: "page-hero"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap"
  }, /*#__PURE__*/React.createElement(Eyebrow, null, "The portfolio \xB7 first product"), /*#__PURE__*/React.createElement("h1", null, "Ecomm"), /*#__PURE__*/React.createElement(Soul, {
    size: "md",
    as: "p",
    className: "page-hero__soul"
  }, "We take only what it takes to run."), /*#__PURE__*/React.createElement("p", {
    className: "lead"
  }, "Shopify-class commerce at near-zero cost, for people and families \u2014 because small businesses are really just people. It's the first product to move from principle into the world, and there's a reason it's first."))), /*#__PURE__*/React.createElement("section", {
    className: "section"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap prose"
  }, /*#__PURE__*/React.createElement("h2", null, "Why commerce first"), /*#__PURE__*/React.createElement("p", null, "Running an organization \u2014 and the infrastructure under a platform \u2014 takes money. Commerce is where money moves most, so by building close to commerce we reach a sustainable position quickest. Ecomm is first because it's the fastest honest path to standing on our own feet."), /*#__PURE__*/React.createElement(Callout, null, "Enough to keep the lights on, and no more."), /*#__PURE__*/React.createElement("h2", null, "What we commit to"), /*#__PURE__*/React.createElement("p", null, "The mission for Ecomm is to keep transaction fees and retail-media fees as low as they can possibly go. While we're still in beta, here is what we're committing to:"), /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("b", null, "Retail media, free."), " Earned through platform engagement rather than paid for."), /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("b", null, "Marketplace storefronts: low or no transaction fees."), " Selling in the shared marketplace costs little or nothing."), /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("b", null, "White-label storefronts: low transaction fees."), " Your own branded storefront stays low-cost to run.")), /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(Button, {
    variant: "ghost",
    href: "#/finances"
  }, "See the open book \u2192")))));
}

/* ---------- Finances (open book) ---------- */
function FinancesScreen() {
  const lines = [{
    item: 'Google Cloud (GCP)',
    for: 'Servers, databases, and the infrastructure the platform runs on — on startup credits today',
    current: 32,
    ant: 75,
    antFrom: 'July 2026'
  }, {
    item: 'Google Workspace',
    for: 'Email and documents — one seat',
    current: 7,
    ant: 14,
    antFrom: 'Sept 2026'
  }, {
    item: 'Anthropic',
    for: 'Claude — one Max plan, the AI we build alongside every day',
    current: 100,
    ant: 100,
    antFrom: null
  }];
  const sumCur = lines.reduce((a, l) => a + l.current, 0);
  const sumAnt = lines.reduce((a, l) => a + l.ant, 0);
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("section", {
    className: "page-hero"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap"
  }, /*#__PURE__*/React.createElement(Eyebrow, null, "Radical transparency \xB7 open book"), /*#__PURE__*/React.createElement("h1", null, "Open book"), /*#__PURE__*/React.createElement(Soul, {
    size: "md",
    as: "p",
    className: "page-hero__soul"
  }, "We show you the receipts."), /*#__PURE__*/React.createElement("p", {
    className: "lead"
  }, "We take only what it takes to run this organization and the platform \u2014 and the only way to mean that is to show our work. Here is what it actually costs to run Wiggleverse, line by line."))), /*#__PURE__*/React.createElement("section", {
    className: "section"
  }, /*#__PURE__*/React.createElement("div", {
    className: "wrap prose"
  }, /*#__PURE__*/React.createElement("h2", null, "What it costs to run Wiggleverse"), /*#__PURE__*/React.createElement("p", {
    className: "ledger-stamp"
  }, "Last updated 8 June 2026 \xB7 hand-kept estimates, refreshed monthly for now."), /*#__PURE__*/React.createElement("table", {
    className: "ledger"
  }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", {
    scope: "col"
  }, "Line item"), /*#__PURE__*/React.createElement("th", {
    scope: "col"
  }, "What it's for"), /*#__PURE__*/React.createElement("th", {
    scope: "col",
    className: "num"
  }, "Current / mo"), /*#__PURE__*/React.createElement("th", {
    scope: "col",
    className: "num"
  }, "Anticipated / mo"))), /*#__PURE__*/React.createElement("tbody", null, lines.map(l => /*#__PURE__*/React.createElement("tr", {
    key: l.item
  }, /*#__PURE__*/React.createElement("td", null, l.item), /*#__PURE__*/React.createElement("td", null, l.for), /*#__PURE__*/React.createElement("td", {
    className: "num"
  }, "$", l.current), /*#__PURE__*/React.createElement("td", {
    className: "num"
  }, "$", l.ant, l.antFrom && /*#__PURE__*/React.createElement("span", {
    className: "when"
  }, "from ", l.antFrom))))), /*#__PURE__*/React.createElement("tfoot", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, "Total"), /*#__PURE__*/React.createElement("td", null, "per month, plus tax"), /*#__PURE__*/React.createElement("td", {
    className: "num"
  }, "$", sumCur), /*#__PURE__*/React.createElement("td", {
    className: "num"
  }, "$", sumAnt, /*#__PURE__*/React.createElement("span", {
    className: "when"
  }, "by Sept 2026"))))), /*#__PURE__*/React.createElement("p", null, "Revenue today is ", /*#__PURE__*/React.createElement("strong", null, "$0"), " \u2014 we haven't launched commerce yet. Covering these costs ourselves is the whole point of ", /*#__PURE__*/React.createElement("a", {
    href: "#/ecomm"
  }, "building commerce first"), "."), /*#__PURE__*/React.createElement(Callout, null, "Ethics that cannot be checked are just claims."))));
}
const SCREENS = {
  '#/': HomeScreen,
  '#/about': AboutScreen,
  '#/ecomm': EcommScreen,
  '#/finances': FinancesScreen
};
function App() {
  const [route, setRoute] = React.useState(window.location.hash || '#/');
  React.useEffect(() => {
    const onHash = () => {
      setRoute(window.location.hash || '#/');
      window.scrollTo(0, 0);
    };
    window.addEventListener('hashchange', onHash);
    return () => window.removeEventListener('hashchange', onHash);
  }, []);
  const Screen = SCREENS[route] || HomeScreen;
  const current = route === '#/about' ? 'About' : route === '#/ecomm' ? 'Build' : route === '#/finances' ? 'Learn' : undefined;
  return /*#__PURE__*/React.createElement("div", {
    className: "wv-app"
  }, /*#__PURE__*/React.createElement(SiteHeader, {
    links: NAV,
    current: current,
    assetBase: ASSET_BASE,
    homeHref: "#/"
  }), /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement(Screen, null)), /*#__PURE__*/React.createElement(SiteFooter, {
    columns: FOOTER_COLS,
    assetBase: ASSET_BASE
  }));
}
ReactDOM.createRoot(document.getElementById('root')).render(/*#__PURE__*/React.createElement(App, null));
})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/wiggleverse-www/app.jsx", error: String((e && e.message) || e) }); }

__ds_ns.BrandLockup = __ds_scope.BrandLockup;

__ds_ns.BuildCard = __ds_scope.BuildCard;

__ds_ns.PathCard = __ds_scope.PathCard;

__ds_ns.Button = __ds_scope.Button;

__ds_ns.Callout = __ds_scope.Callout;

__ds_ns.Eyebrow = __ds_scope.Eyebrow;

__ds_ns.Notice = __ds_scope.Notice;

__ds_ns.Soul = __ds_scope.Soul;

__ds_ns.Tag = __ds_scope.Tag;

__ds_ns.SiteFooter = __ds_scope.SiteFooter;

__ds_ns.SiteHeader = __ds_scope.SiteHeader;

})();
