pcbjam/site/src/sections/Multiplayer.astro
Viktor Vaczi 735d8a48ee feat(site): 🫙 PCBJam landing revisions — branding, accuracy, positioning graphic
Founder review pass on the landing page, plus commit the landing-page
research/spec docs under features/lp.

Branding & assets:
- New PCBJam mark: convert the jam-jar image to favicon.svg (trimmed, rounded
  tile) and use it in the browser tab, header, and footer.
- Footer "Built by": flower mark + "Emergence Engineering" in white Oswald (the
  blog's title font, self-hosted via @fontsource) so it's legible on dark.
- Produce the positioning quadrant graphic (public/graphics) and drop the placeholder.

Copy / accuracy:
- Remove header GitHub link; point "Built by EE" + footer "About" to
  emergence-engineering.com; Built-by CTA -> mailto:contact@emergence-engineering.com.
- Replace the wrong testimonial with Greg Detre's real quote from EE's site.
- Drop blog icons from Multiplayer/Pillars/How-it-works; add "Coming soon" to
  live-cursors & pin-comment; drop the hard-coded Yjs mention.
- Rework monetization to free+local / paid cloud-sync; remove "no metered AI",
  "no per-seat toll", and the Flux price claim; soften the AI section.
- Reframe waitlist copy (incl. confirmation email) to newsletter + early access.

Fixes:
- Offset only #waitlist for the sticky header (scroll-margin-top); section
  anchors keep their original behavior.

Docs:
- Commit features/lp (copy spec, brand guide, competitive research) via force-add
  over the /features/ gitignore.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 17:14:19 +02:00

99 lines
2.5 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
import SectionBand from '../components/SectionBand.astro';
import DemoVideo from '../components/DemoVideo.astro';
const subpoints = [
{
title: 'Live cursors & presence',
body: 'See whos here and where theyre working.',
comingSoon: true,
},
{
title: 'Conflict-free editing',
body: 'CRDT sync merges everyones edits — no overwrite wars.',
comingSoon: false,
},
{
title: 'Pin a comment to a pad',
body: 'Review and resolve right on the canvas.',
comingSoon: true,
},
];
---
<SectionBand id="multiplayer" labelledby="mp-h2">
<div class="section-head">
<span class="eyebrow">Real-time, not “real-time-ish”</span>
<h2 id="mp-h2">Your whole team. One board. The same second.</h2>
<p class="lead">
Everyone else who says “real-time collaboration” means comments, check-out locks, or a
read-only viewer. PCBJam means <strong>live co-editing</strong>: shared cursors, presence,
and conflict-free edits on the same schematic and layout — the way you already work in
Google Docs and Figma. Route a trace while a teammate places parts on the other side of
the board. No emailing files. No “who has it checked out?”
</p>
</div>
<DemoVideo
class="mp-demo"
caption="2 editors · live cursors · one board.kicad_pcb · no merge step"
/>
<ul class="subpoints">
{
subpoints.map((s) => (
<li class="subpoint">
<strong class="subpoint-title">
{s.title}
{s.comingSoon && <span class="badge">Coming soon</span>}
</strong>
<p class="muted">{s.body}</p>
</li>
))
}
</ul>
</SectionBand>
<style>
.mp-demo {
margin-block: 0.5rem 2rem;
}
.subpoints {
list-style: none;
padding: 0;
margin: 0;
display: grid;
gap: 1.25rem;
grid-template-columns: repeat(3, 1fr);
}
.subpoint {
padding-top: 0.85rem;
border-top: 2px solid var(--accent);
}
.subpoint-title {
display: flex;
align-items: center;
gap: 0.5rem;
flex-wrap: wrap;
}
.subpoint p {
margin: 0.3rem 0 0;
font-size: 0.95rem;
}
.badge {
font-family: var(--font-mono);
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--signal-400);
border: 1px solid color-mix(in srgb, var(--signal-400) 50%, transparent);
border-radius: var(--radius-full, 9999px);
padding: 0.1rem 0.5rem;
}
@media (max-width: 760px) {
.subpoints {
grid-template-columns: 1fr;
}
}
</style>