// Artos Solutions — holding-co site
// Single-page, sanctuary aesthetic, with five tweak axes:
//   palette · typography · hero · mission · portfolio

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "palette": "ember",
  "typePair": "newsreader-manrope",
  "hero": "reverent",
  "mission": "letter",
  "portfolio": "plate"
}/*EDITMODE-END*/;

// ─── palette options ───────────────────────────────────────────────────────
// All four are dark-leaning for an "edgier" default. Vellum kept as the
// single light option for contrast.
const PALETTES = {
  ember: {
    label: "Ember",
    swatch: ["#1c1814", "#f0e8d8", "#8a7a62", "#d97757"],
    vars: {
      "--bg": "#1c1814", "--bg-warm": "#2a2420", "--bg-hover": "#322a22",
      "--ink": "#f0e8d8", "--ink-soft": "#c4b8a0",
      "--taupe": "#8a7a62", "--sand": "#6a5e48",
      "--rule": "rgba(240, 232, 216, 0.14)",
      "--rule-soft": "rgba(240, 232, 216, 0.06)",
      "--accent": "#d97757",
    },
  },
  walnut: {
    label: "Walnut",
    swatch: ["#14100c", "#e8dccb", "#6e5f4a", "#c8884a"],
    vars: {
      "--bg": "#14100c", "--bg-warm": "#1f1812", "--bg-hover": "#28201a",
      "--ink": "#e8dccb", "--ink-soft": "#b8a890",
      "--taupe": "#7e6c54", "--sand": "#5a4d3c",
      "--rule": "rgba(232, 220, 203, 0.14)",
      "--rule-soft": "rgba(232, 220, 203, 0.06)",
      "--accent": "#c8884a",
    },
  },
  graphite: {
    label: "Graphite",
    swatch: ["#16181a", "#ebe7e0", "#7e7a72", "#b8804a"],
    vars: {
      "--bg": "#16181a", "--bg-warm": "#212326", "--bg-hover": "#2a2d31",
      "--ink": "#ebe7e0", "--ink-soft": "#b8b4ad",
      "--taupe": "#7e7a72", "--sand": "#544f48",
      "--rule": "rgba(235, 231, 224, 0.14)",
      "--rule-soft": "rgba(235, 231, 224, 0.06)",
      "--accent": "#b8804a",
    },
  },
  vellum: {
    label: "Vellum (light)",
    swatch: ["#f3ede2", "#1f1612", "#7a5a44", "#a64e2e"],
    vars: {
      "--bg": "#f3ede2", "--bg-warm": "#ebe2cf", "--bg-hover": "#f8f2e6",
      "--ink": "#1f1612", "--ink-soft": "#4a3a30",
      "--taupe": "#7a5a44", "--sand": "#c79f7a",
      "--rule": "rgba(31, 22, 18, 0.14)",
      "--rule-soft": "rgba(31, 22, 18, 0.07)",
      "--accent": "#a64e2e",
    },
  },
};

// ─── typography pairings ───────────────────────────────────────────────────
// All modern editorial serifs (no Cormorant — too curly). Paired with
// confident humanist sans.
const TYPE_PAIRS = {
  "newsreader-manrope": {
    label: "Newsreader + Manrope",
    serif: '"Newsreader", Georgia, serif',
    sans: '"Manrope", -apple-system, sans-serif',
  },
  "source-dmsans": {
    label: "Source Serif + DM Sans",
    serif: '"Source Serif 4", Georgia, serif',
    sans: '"DM Sans", -apple-system, sans-serif',
  },
  "spectral-public": {
    label: "Spectral + Public Sans",
    serif: '"Spectral", Georgia, serif',
    sans: '"Public Sans", -apple-system, sans-serif',
  },
};

// ─── content ───────────────────────────────────────────────────────────────
const PRINCIPLES = [
  { n: "I.",   t: "Stewardship before ownership.",
    d: "We tend, we do not consume. Every business is borrowed from the families it serves." },
  { n: "II.",  t: "The family is the first sanctuary.",
    d: "Before product, market, or strategy comes the household." },
  { n: "III.", t: "Healing is slower than harm.",
    d: "We honor the pace. We do not trade soul for scale." },
  { n: "IV.",  t: "Plain truth, no theatre.",
    d: "We say what we mean. The age of noise is loud enough." },
  { n: "V.",   t: "Build what we would bring home.",
    d: "Every decision passes through one filter. The filter is simple." },
  { n: "VI.",  t: "Faith is the foundation, not the decoration.",
    d: "The values are bedrock. They are not paint." },
];

const PORTFOLIO = [
  {
    name: "MyHomeAware",
    sector: "Home & family safety",
    year: "2024",
    initial: "M",
    desc: "Awareness, education, and tools that protect families inside the place they should feel safest.",
    status: "Active",
    href: "https://www.myhomeaware.com",
  },
  {
    name: "Forthcoming",
    sector: "Health · Wellness · Hospitality",
    year: "—",
    initial: "·",
    desc: "Companies join when the fit is right. Not when the calendar demands it.",
    status: "Open",
    empty: true,
  },
];

const FOUNDERS = [
  {
    initial: "·",
    role: "Founder & Steward",
    name: "Name placeholder",
    bio: "Short founder biography — what they tend to, what they're known for, and the family they're building this for.",
  },
  {
    initial: "·",
    role: "Co-founder",
    name: "Name placeholder",
    bio: "Short founder biography — what they tend to, what they're known for, and the family they're building this for.",
  },
];

// ─── wheat mark ──────────────────────────────────────────────────────────────
// Two wheat stalks crossed in an X. Drawn once as a vertical stalk in <defs>,
// then placed twice with ±32° rotation so the geometry stays symmetric.
function WheatMark() {
  return (
    <svg viewBox="0 0 24 24" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
      <defs>
        <g id="artos-wheat-stalk">
          {/* stem (slightly below center so heads are prominent) */}
          <line x1="0" y1="3.2" x2="0" y2="-9" strokeWidth="0.7" fill="none" />
          {/* grain pairs, alternating, getting smaller toward the tip */}
          <g fill="currentColor" stroke="none">
            <ellipse cx="-0.95" cy="-2.4" rx="1.35" ry="0.55" transform="rotate(35 -0.95 -2.4)" />
            <ellipse cx="0.95"  cy="-2.4" rx="1.35" ry="0.55" transform="rotate(-35 0.95 -2.4)" />
            <ellipse cx="-0.85" cy="-4.6" rx="1.25" ry="0.5" transform="rotate(35 -0.85 -4.6)" />
            <ellipse cx="0.85"  cy="-4.6" rx="1.25" ry="0.5" transform="rotate(-35 0.85 -4.6)" />
            <ellipse cx="-0.7"  cy="-6.7" rx="1.1"  ry="0.45" transform="rotate(35 -0.7 -6.7)" />
            <ellipse cx="0.7"   cy="-6.7" rx="1.1"  ry="0.45" transform="rotate(-35 0.7 -6.7)" />
            <ellipse cx="0" cy="-8.5" rx="0.42" ry="1.05" />
          </g>
        </g>
      </defs>
      <g transform="translate(12 12.5) scale(1.08)">
        <use href="#artos-wheat-stalk" transform="rotate(-32)" />
        <use href="#artos-wheat-stalk" transform="rotate(32)" />
      </g>
    </svg>
  );
}

// ─── reveal-on-scroll hook ─────────────────────────────────────────────────
function useReveal() {
  React.useEffect(() => {
    const els = document.querySelectorAll(".reveal");
    const obs = new IntersectionObserver((entries) => {
      entries.forEach((e) => { if (e.isIntersecting) e.target.classList.add("in"); });
    }, { threshold: 0.12, rootMargin: "0px 0px -80px 0px" });
    els.forEach((el) => obs.observe(el));
    return () => obs.disconnect();
  }, []);
}

// ─── hero variations ──────────────────────────────────────────────────────
function HeroReverent() {
  return (
    <div className="hero-reverent hero-body">
      <h1 className="hero-statement">
        <span className="ln"><span>Healing.</span></span>
        <span className="ln"><span>Wellness.</span></span>
        <span className="ln"><span><em>For families.</em></span></span>
      </h1>
    </div>
  );
}

function HeroEditorial() {
  return (
    <div className="hero-editorial hero-body">
      <div className="col-meta">
        <div className="greek">ἄρτος</div>
        <div className="greek-def">
          <em style={{fontStyle: "italic"}}>artos</em>, n. — Greek for bread. The daily provision. The staple at the family table.
        </div>
      </div>
      <h1>
        A holding company for healing, wellness, and the home.
      </h1>
    </div>
  );
}

function HeroLitany() {
  return (
    <div className="hero-litany hero-body">
      <h1>
        <span>For the family.</span>
        <span className="indent">Healing.</span>
        <span className="indent-2">Wellness.</span>
        <span>A quiet life, against the noise.</span>
      </h1>
    </div>
  );
}

const HERO_VARIANTS = {
  reverent: HeroReverent,
  editorial: HeroEditorial,
  litany: HeroLitany,
};

// ─── mission variations ───────────────────────────────────────────────────
function MissionLetter() {
  return (
    <div className="mission-letter">
      <div className="col-meta">
        <div>Mission<br/>A note to the<br/>families we serve</div>
        <div>Anno Domini<br/>MMXXIV</div>
      </div>
      <div className="col-body">
        <p className="salutation">To the families,</p>
        <p className="lead">
          We connect and promote healing and wellness for families.
        </p>
        <p>
          The world has grown loud. The quiet work of caring for a household has been pushed to the margins. We believe the family is worth more.
        </p>
        <p>
          Artos gathers companies that serve families directly. We hold them carefully. We let them grow.
        </p>
        <div className="signature">— Artos Solutions</div>
      </div>
    </div>
  );
}

function MissionStacked() {
  return (
    <div className="mission-stacked">
      <p className="pullquote">
        Healing and wellness for families. <em>That is the whole of it.</em>
      </p>
      <div className="body-cols">
        <div>
          <p>The world has grown loud. The quiet work of caring for a household has been pushed to the margins.</p>
          <p>We believe the family is worth more.</p>
        </div>
        <div>
          <p>Artos gathers companies that serve families directly. We hold them carefully. We let them grow at the pace good things grow.</p>
          <p>We measure by what is built into the home, not by what is broadcast outside of it.</p>
        </div>
      </div>
    </div>
  );
}

function MissionMargin() {
  return (
    <div className="mission-margin">
      <div className="body">
        <p>We connect and promote healing and wellness for families.</p>
        <p>The world has grown loud. The quiet work of caring for a household has been pushed to the margins.</p>
        <p>Artos gathers companies that serve families directly. We hold them carefully. We let them grow.</p>
      </div>
      <div className="annot">
        <div>Filed under<br/><span style={{color:"var(--ink)"}}>Mission</span></div>
        <div>Audience<br/><span style={{color:"var(--ink)"}}>Families · Founders · Partners</span></div>
        <div>Posture<br/><span style={{color:"var(--ink)"}}>Quiet by intention</span></div>
      </div>
    </div>
  );
}

const MISSION_VARIANTS = {
  letter: MissionLetter,
  stacked: MissionStacked,
  margin: MissionMargin,
};

// ─── portfolio cards ──────────────────────────────────────────────────────
function PortfolioPlate({ p }) {
  return (
    <a className={"pf-plate" + (p.empty ? " empty" : "")} href={p.href || "#"}>
      <div className="meta-row">
        <span>{p.sector}</span>
        <span>{p.status}</span>
      </div>
      <div style={{display:"flex", alignItems:"center", gap:18}}>
        <span className="seal">{p.initial}</span>
        <h3 className="title">{p.name}</h3>
      </div>
      <p className="desc">{p.desc}</p>
      {!p.empty && (
        <div className="foot">
          <span className="lnk">Visit <span className="arrow">→</span></span>
          <span style={{fontFamily:"var(--mono)", fontSize:10.5, letterSpacing:"0.16em", textTransform:"uppercase", color:"var(--taupe)"}}>Est. {p.year}</span>
        </div>
      )}
    </a>
  );
}

function PortfolioIndex({ p }) {
  return (
    <a className={"pf-index" + (p.empty ? " empty" : "")} href={p.href || "#"}>
      <div className="row-meta">
        <span>{p.sector}</span>
        <span>{p.status}</span>
      </div>
      <div className="top">
        <h3 className="title">{p.name}</h3>
        <span className="yr">{p.year}</span>
      </div>
      <p className="desc">{p.desc}</p>
    </a>
  );
}

function PortfolioMarker({ p }) {
  return (
    <a className={"pf-marker" + (p.empty ? " empty" : "")} href={p.href || "#"}>
      <div className="bar" aria-hidden="true"></div>
      <div className="content">
        <div className="meta-row">
          <span>{p.sector}</span>
          <span>{p.year !== "—" ? "Est. " + p.year : "—"}</span>
          <span>{p.status}</span>
        </div>
        <h3 className="title">{p.name}</h3>
        <p className="desc">{p.desc}</p>
        {!p.empty && <span className="foot">Visit <span className="arrow">→</span></span>}
      </div>
    </a>
  );
}

const PORTFOLIO_VARIANTS = {
  plate: PortfolioPlate,
  index: PortfolioIndex,
  marker: PortfolioMarker,
};

// ─── newsletter ────────────────────────────────────────────────────────────
function Newsletter() {
  const [email, setEmail] = React.useState("");
  const [sent, setSent] = React.useState(false);
  const submit = (e) => {
    e.preventDefault();
    if (!email) return;
    setSent(true);
    setTimeout(() => { setSent(false); setEmail(""); }, 3000);
  };
  return (
    <section className="newsletter">
      <div className="wrap">
        <div className="newsletter-inner reveal">
          <div>
            <div className="eyebrow eyebrow-dot" style={{marginBottom:18}}>The dispatch</div>
            <h2>A quiet letter, <em>once a quarter.</em></h2>
            <p className="sub">No marketing. No urgency. Notes on what we are tending to.</p>
          </div>
          <form className="nl-form" onSubmit={submit}>
            <div className={"nl-row" + (sent ? " sent" : "")}>
              <input
                type="email"
                placeholder="your@email"
                value={email}
                onChange={(e) => setEmail(e.target.value)}
                aria-label="Email"
              />
              <button type="submit">{sent ? "Received" : "Subscribe"}</button>
            </div>
            <div className="nl-fineprint">Four letters a year · Unsubscribe anytime</div>
          </form>
        </div>
      </div>
    </section>
  );
}

// ─── nav ───────────────────────────────────────────────────────────────────
function Nav() {
  return (
    <div className="nav">
      <div className="wrap">
        <div className="nav-row">
          <a href="#top" className="wordmark">
            <span className="mark"><WheatMark /></span>
            <span>Artos Solutions</span>
          </a>
          <nav className="nav-links">
            <a href="#mission">Mission</a>
            <a href="#principles">Principles</a>
            <a href="#approach">Approach</a>
            <a href="#portfolio">Portfolio</a>
            <a href="#founders">Founders</a>
            <a href="#contact">Contact</a>
          </nav>
        </div>
      </div>
    </div>
  );
}

// ─── app ───────────────────────────────────────────────────────────────────
function App() {
  const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
  useReveal();

  // Apply palette + type pair as CSS variables on :root
  React.useEffect(() => {
    const pal = PALETTES[t.palette] || PALETTES.cream;
    const pair = TYPE_PAIRS[t.typePair] || TYPE_PAIRS["cormorant-mulish"];
    const root = document.documentElement.style;
    Object.entries(pal.vars).forEach(([k, v]) => root.setProperty(k, v));
    root.setProperty("--serif", pair.serif);
    root.setProperty("--sans", pair.sans);
  }, [t.palette, t.typePair]);

  const Hero = HERO_VARIANTS[t.hero] || HeroReverent;
  const Mission = MISSION_VARIANTS[t.mission] || MissionLetter;
  const PfCard = PORTFOLIO_VARIANTS[t.portfolio] || PortfolioPlate;

  return (
    <>
      <Nav />

      <main id="top">
        {/* HERO */}
        <section className="hero wrap" data-screen-label="01 Hero">
          <div className="hero-top">
            <div className="eyebrow eyebrow-dot">Artos Solutions · A holding company</div>
          </div>
          {/* re-mount when variant changes so the entrance animation re-plays */}
          <Hero key={t.hero} />
          <div className="scroll-cue">
            <span className="line"></span>
            <span>Scroll to begin</span>
          </div>
        </section>

        {/* MISSION */}
        <section id="mission" data-screen-label="02 Mission" style={{borderTop:"1px solid var(--rule)"}}>
          <div className="wrap">
            <div className="sect-head reveal">
              <div className="sect-num">
                <div className="eyebrow">§ 01</div>
                <div className="roman">i.</div>
              </div>
              <h2 className="sect-title">Mission</h2>
            </div>
            <div className="reveal"><Mission /></div>
          </div>
        </section>

        {/* PRINCIPLES */}
        <section id="principles" data-screen-label="03 Principles" style={{background:"var(--bg-warm)", borderTop:"1px solid var(--rule)", borderBottom:"1px solid var(--rule)"}}>
          <div className="wrap">
            <div className="sect-head reveal">
              <div className="sect-num">
                <div className="eyebrow">§ 02</div>
                <div className="roman">ii.</div>
              </div>
              <div>
                <h2 className="sect-title">What we believe</h2>
                <p style={{margin:"18px 0 0", maxWidth:"42ch", color:"var(--ink-soft)", fontSize:15, lineHeight:1.7}}>
                  Six principles. Every company. Every dollar. Every word.
                </p>
              </div>
            </div>
            <div className="principles-list">
              {PRINCIPLES.map((p, i) => (
                <div className="principle reveal" key={i}>
                  <div className="roman">{p.n}</div>
                  <h3>{p.t}</h3>
                  <p>{p.d}</p>
                </div>
              ))}
            </div>
          </div>
        </section>

        {/* APPROACH / THESIS */}
        <section id="approach" data-screen-label="04 Approach">
          <div className="wrap">
            <div className="sect-head reveal">
              <div className="sect-num">
                <div className="eyebrow">§ 03</div>
                <div className="roman">iii.</div>
              </div>
              <h2 className="sect-title">Our approach</h2>
            </div>
            <div className="approach-grid">
              <div className="col-meta reveal">
                <div>Thesis<br/><span style={{color:"var(--ink)"}}>A small, tended portfolio</span></div>
                <div style={{marginTop:22}}>Sectors<br/><span style={{color:"var(--ink)"}}>Health · Wellness · Home · Rest</span></div>
                <div style={{marginTop:22}}>Horizon<br/><span style={{color:"var(--ink)"}}>Generational</span></div>
              </div>
              <div className="approach-body reveal">
                <p>The modern world has confused movement with progress, and consumption with care. Families are surrounded by products that compete for attention rather than companies that earn trust.</p>
                <div className="pull">
                  A small portfolio of companies that serve families directly. Tended slowly, the way good things are tended to.
                </div>
                <p>Health and wellness is the center of gravity. But the family does not live in one industry. It lives across home, health, hospitality, and rest. We will follow them there.</p>

                <div className="approach-pillars">
                  <div className="pillar">
                    <span className="n">01</span>
                    <h4>Acquire</h4>
                    <p>Mission-aligned companies built to serve families, not extract from them.</p>
                  </div>
                  <div className="pillar">
                    <span className="n">02</span>
                    <h4>Tend</h4>
                    <p>Operational care, capital, and time. Without quarterly noise.</p>
                  </div>
                  <div className="pillar">
                    <span className="n">03</span>
                    <h4>Connect</h4>
                    <p>Companies in the portfolio share learnings, talent, and trust.</p>
                  </div>
                  <div className="pillar">
                    <span className="n">04</span>
                    <h4>Hold</h4>
                    <p>We hold for generations, not for exits. Stewardship is the strategy.</p>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </section>

        {/* PORTFOLIO */}
        <section id="portfolio" data-screen-label="05 Portfolio" style={{borderTop:"1px solid var(--rule)"}}>
          <div className="wrap">
            <div className="sect-head reveal">
              <div className="sect-num">
                <div className="eyebrow">§ 04</div>
                <div className="roman">iv.</div>
              </div>
              <div>
                <h2 className="sect-title">Companies we hold</h2>
                <p style={{margin:"18px 0 0", maxWidth:"42ch", color:"var(--ink-soft)", fontSize:15, lineHeight:1.7}}>
                  One company today. A small, intentional set tomorrow.
                </p>
              </div>
            </div>
            <div className="portfolio-grid">
              {PORTFOLIO.map((p, i) => (
                <div className="reveal" key={i}><PfCard p={p} /></div>
              ))}
            </div>
          </div>
        </section>

        {/* FOUNDERS */}
        <section id="founders" data-screen-label="06 Founders" style={{background:"var(--bg-warm)", borderTop:"1px solid var(--rule)", borderBottom:"1px solid var(--rule)"}}>
          <div className="wrap">
            <div className="sect-head reveal">
              <div className="sect-num">
                <div className="eyebrow">§ 05</div>
                <div className="roman">v.</div>
              </div>
              <h2 className="sect-title">Who we are</h2>
            </div>
            <div className="founders-grid">
              <div className="col-meta reveal" style={{fontFamily:"var(--mono)", fontSize:11, letterSpacing:"0.14em", textTransform:"uppercase", color:"var(--taupe)", lineHeight:1.9}}>
                <div>The people<br/><span style={{color:"var(--ink)"}}>tending to Artos</span></div>
                <div style={{marginTop:22}}>Based in<br/><span style={{color:"var(--ink)"}}>[ City ]</span></div>
              </div>
              <div className="founder-cards">
                {FOUNDERS.map((f, i) => (
                  <div className="founder reveal" key={i}>
                    <span className="portrait">{f.initial}</span>
                    <span className="role">{f.role}</span>
                    <h3 className="name">{f.name}</h3>
                    <p className="bio">{f.bio}</p>
                  </div>
                ))}
              </div>
            </div>
          </div>
        </section>

        {/* PRESS */}
        <section id="press" data-screen-label="07 Press">
          <div className="wrap">
            <div className="sect-head reveal">
              <div className="sect-num">
                <div className="eyebrow">§ 06</div>
                <div className="roman">vi.</div>
              </div>
              <h2 className="sect-title">Press &amp; notes</h2>
            </div>
            <div className="press-empty reveal">
              <span className="glyph">·</span>
              <p>Artos is quiet by design. When there is something worth saying, it will appear here.</p>
              <span className="small">No press at this time</span>
            </div>
          </div>
        </section>

        {/* CONTACT */}
        <section id="contact" data-screen-label="08 Contact" style={{borderTop:"1px solid var(--rule)"}}>
          <div className="wrap">
            <div className="sect-head reveal">
              <div className="sect-num">
                <div className="eyebrow">§ 07</div>
                <div className="roman">vii.</div>
              </div>
              <div>
                <h2 className="sect-title">Partner with us</h2>
                <p style={{margin:"18px 0 0", maxWidth:"42ch", color:"var(--ink-soft)", fontSize:15, lineHeight:1.7}}>
                  A few quiet doors. Each opens on a different conversation.
                </p>
              </div>
            </div>
            <div className="contact-grid">
              <div className="col-meta reveal" style={{fontFamily:"var(--mono)", fontSize:11, letterSpacing:"0.14em", textTransform:"uppercase", color:"var(--taupe)", lineHeight:1.9}}>
                <div>Reply time<br/><span style={{color:"var(--ink)"}}>Within seven days</span></div>
                <div style={{marginTop:22}}>Posture<br/><span style={{color:"var(--ink)"}}>Considered, not urgent</span></div>
              </div>
              <div className="contact-rows reveal">
                <div className="contact-row">
                  <div className="who">Founders</div>
                  <div className="what">Building a company that serves families? We would like to hear about it.</div>
                  <a className="lnk" href="mailto:founders@artossolutions.com">Write us <span className="arrow">→</span></a>
                </div>
                <div className="contact-row">
                  <div className="who">Investors</div>
                  <div className="what">For capital partners aligned with a generational horizon.</div>
                  <a className="lnk" href="mailto:capital@artossolutions.com">Begin <span className="arrow">→</span></a>
                </div>
                <div className="contact-row">
                  <div className="who">Press</div>
                  <div className="what">Interviews and editorial inquiries.</div>
                  <a className="lnk" href="mailto:press@artossolutions.com">Inquire <span className="arrow">→</span></a>
                </div>
                <div className="contact-row">
                  <div className="who">Careers</div>
                  <div className="what">We hire slowly. Open notes welcome.</div>
                  <a className="lnk" href="mailto:hello@artossolutions.com">Introduce yourself <span className="arrow">→</span></a>
                </div>
              </div>
            </div>
          </div>
        </section>
      </main>

      <Newsletter />

      <footer>
        <div className="wrap">
          <div className="foot-top">
            <div className="col-mark">
              <a href="#top" className="wordmark">
                <span className="mark"><WheatMark /></span>
                <span>Artos Solutions</span>
              </a>
              <p className="tag">A holding company tending to healing and wellness for families.</p>
            </div>
            <div className="foot-col">
              <h5>The company</h5>
              <ul>
                <li><a href="#mission">Mission</a></li>
                <li><a href="#principles">Principles</a></li>
                <li><a href="#approach">Approach</a></li>
                <li><a href="#founders">Founders</a></li>
              </ul>
            </div>
            <div className="foot-col">
              <h5>Portfolio</h5>
              <ul>
                <li><a href="#portfolio">All companies</a></li>
                <li><a href="https://www.myhomeaware.com">MyHomeAware</a></li>
              </ul>
            </div>
            <div className="foot-col">
              <h5>Contact</h5>
              <ul>
                <li><a href="mailto:founders@artossolutions.com">Founders</a></li>
                <li><a href="mailto:capital@artossolutions.com">Investors</a></li>
                <li><a href="mailto:press@artossolutions.com">Press</a></li>
                <li><a href="mailto:hello@artossolutions.com">Careers</a></li>
              </ul>
            </div>
          </div>
          <div className="foot-bottom">
            <span>© Artos Solutions · MMXXIV</span>
          </div>
        </div>
      </footer>

      <TweaksPanel title="Tweaks">
        <TweakSection label="Palette" />
        <TweakColor
          label="Color"
          value={PALETTES[t.palette].swatch}
          options={Object.values(PALETTES).map((p) => p.swatch)}
          onChange={(arr) => {
            const key = Object.keys(PALETTES).find((k) => PALETTES[k].swatch === arr || JSON.stringify(PALETTES[k].swatch) === JSON.stringify(arr));
            if (key) setTweak("palette", key);
          }}
        />

        <TweakSection label="Typography" />
        <TweakSelect
          label="Pairing"
          value={t.typePair}
          options={Object.keys(TYPE_PAIRS).map((k) => ({ value: k, label: TYPE_PAIRS[k].label }))}
          onChange={(v) => setTweak("typePair", v)}
        />

        <TweakSection label="Hero treatment" />
        <TweakRadio
          label="Style"
          value={t.hero}
          options={[
            { value: "reverent", label: "Reverent" },
            { value: "editorial", label: "Editorial" },
            { value: "litany", label: "Litany" },
          ]}
          onChange={(v) => setTweak("hero", v)}
        />

        <TweakSection label="Mission layout" />
        <TweakRadio
          label="Form"
          value={t.mission}
          options={[
            { value: "letter", label: "Letter" },
            { value: "stacked", label: "Stacked" },
            { value: "margin", label: "Margin" },
          ]}
          onChange={(v) => setTweak("mission", v)}
        />

        <TweakSection label="Portfolio card" />
        <TweakRadio
          label="Style"
          value={t.portfolio}
          options={[
            { value: "plate", label: "Plate" },
            { value: "index", label: "Index" },
            { value: "marker", label: "Marker" },
          ]}
          onChange={(v) => setTweak("portfolio", v)}
        />
      </TweaksPanel>
    </>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(<App />);
