OpenDesign as an enterprise design platform: a buyer-forwardable proposal for a design-org's economic buyer — pain, value, ROI, rollout. Built as a decision-grade B2B sales deck for economic buyer, design VP, procurement.
Bold, clean, professional, high-contrast split-panel decks. Theme locked to the Electric Studio preset (section 2 of STYLE_PRESETS.md) from the MIT-licensed zarazhangrui/frontend-slides.
Start from example.html in this plugin folder. It is the proven seed: keep its stage CSS (full viewport-base.css contents), the split-panel shell, the corner-marks chrome, the :root tokens, and the entire SlidePresentation controller script verbatim — replace slide content only. Do not rewrite the design; do not introduce any color or font outside this spec.
:root — complete list, no additions):root {
--bg-dark: #0a0a0a; /* edge bar, dark text, stage letterbox */
--bg-white: #ffffff; /* upper panel */
--accent-blue: #4361ee; /* cobalt panel, chips, bars, numerals */
--text-dark: #0a0a0a;
--text-light: #ffffff;
--text-dark-soft: rgba(10, 10, 10, 0.58);
--text-light-soft: rgba(255, 255, 255, 0.72);
--line-dark: rgba(10, 10, 10, 0.14);
--line-light: rgba(255, 255, 255, 0.28);
--blue-soft: rgba(67, 97, 238, 0.10); /* tick boxes, outline bar fills */
--stage-bg: var(--bg-dark);
--slide-bg: var(--bg-white);
--font: 'Manrope', sans-serif; /* the ONLY typeface */
--title-size: 152px;
--h2-size: 88px;
--lede-size: 33px;
--body-size: 27px;
--slide-pad-x: 110px;
--edge-bar-h: 14px;
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
--duration-normal: 0.7s;
}
Forbidden: any other hue, gradients, purple/indigo (#6366f1), warm accents, photography, illustrations, drop shadows, rounded hero cards. The palette is exactly white / cobalt / near-black plus their soft alphas.
-0.025em to -0.035em), line-height ≤ 1.08. Title ~152px, H2 60–88px. A terminal period in --accent-blue (<span class="blue">.</span>) is a signature flourish.“ mark (~220px): quote typography is the deck's hero visual.letter-spacing: 0.34em, cobalt on white / white on cobalt.--text-dark-soft; body copy on the cobalt panel stays full --text-light for WCAG AA contrast (the soft light alpha is reserved for bold uppercase chrome: marks, hints, separators).letter-spacing: 0.22em.Every slide is the same shell:
<section class="slide s-<master>">
<div class="split">
<div class="panel panel-white panel-pad"> … </div>
<div class="edge-bar"></div> <!-- 14px #0a0a0a accent bar on the panel seam -->
<div class="panel panel-blue panel-pad"> … </div>
</div>
<div class="mark mark-tl dark"><span class="chip"></span>Brand</div>
<div class="mark mark-tr dark"><span class="soft">Section</span></div>
<div class="mark mark-bl light"><span class="soft">Deck label</span></div>
<div class="mark mark-br light">NN / NN</div>
</section>
.edge-bar, 14px, --bg-dark) sits on the seam of every slide; use .edge-bar.light (white) only when a slide reads as cobalt-dominant and needs the inverse.NN / NN page mark. Marks over the white panel use .dark, marks over the cobalt panel use .light.--slide-pad-x (110px) on both panels; spacing stays confident and restrained — generous margins, no cramming.| Master | Split | Content |
| ------ | ----- | ------- |
| s-title | 50/50 | Kicker + giant statement title on white; lede + meta row on blue |
| s-agenda | 348px / rest | H2 on white; numbered hairline rows (--line-light) on blue with idx + hint |
| s-divider | 150px / rest | Empty white strip; giant outlined number (-webkit-text-stroke: 3px var(--bg-white)) + label on cobalt |
| s-bullets | deep / 240px | Kicker + H2 + ≤3 tick points (cobalt-bordered .tick with inline-SVG check) on white; one bold takeaway on blue |
| s-stat | deep / 300px | Oversized cobalt number (~400px, 800) on white; label + note on blue |
| s-quote | deep / 220px | Cobalt “ + 92px statement quote on white; attribution on blue |
| s-compare | 50/50 | The split IS the contrast: "their way" on white vs "our way" on cobalt, dash-topped list items |
| s-grid | 300px / rest | H2 on white; 2×2 .gcard grid (2px --line-light borders) on cobalt |
| s-chart | deep / 200px | Pure-CSS bar chart on white: cobalt bars (.solid fill or --blue-soft + cobalt border), scaleY(0)→1 entrance; takeaway on blue |
| s-close | 150px / rest | Cobalt-dominant statement ("Let's make something electric.") + inline-SVG contact links |
.deck-viewport (fills the window) wraps .deck-stage (1920×1080, transform-origin: 0 0).factor = min(innerWidth/1920, innerHeight/1080), then translate(x, y) scale(factor) to center with letterbox/pillarbox; re-run on resize.prefers-reduced-motion)..active/.visible (visibility/opacity/pointer-events) — never display: none.SlidePresentation controller verbatim): ←/→/↑/↓/Space/PageUp/PageDown/Home/End, debounced wheel (~650ms), touch swipe (≥40px), #/<index> hash routing with deep-link restore, page counter pill in .deck-controls fixed outside the scaled stage..reveal elements transition when the slide gains .visible; stagger via transition-delay in ~0.1s steps.cubic-bezier(0.16, 1, 0.3, 1). Animate only transform and opacity. Chart bars enter via scaleY.prefers-reduced-motion support is mandatory (in the base CSS)..html: all CSS/JS inline, zero build, zero external JS, no CDN scripts. Google Fonts link for Manrope is the only external reference.#4361ee on white, #ffffff on cobalt). Charts are pure CSS. No remote images./* === SECTION NAME === */. Never negate CSS functions directly (-clamp() is silently ignored) — use calc(-1 * clamp(...)).Theme, fixed-stage model, and workflow come from the upstream MIT-licensed zarazhangrui/frontend-slides (© 2025 Zara Zhang), Electric Studio preset (STYLE_PRESETS.md section 2). The LICENSE file ships in this plugin folder; keep it in place when redistributing.
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/fs-electric-studio · pinned to the source commit
# Run from your project root
git clone https://github.com/nexu-io/open-design.git .skillboard-tmp
git -C .skillboard-tmp checkout 9881cff70e02be86c2a58130af512011ba23d4af
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/plugins/_official/examples/fs-electric-studio" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/nexu-io/open-design.git .skillboard-tmp
git -C .skillboard-tmp checkout 9881cff70e02be86c2a58130af512011ba23d4af
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/plugins/_official/examples/fs-electric-studio" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/fs-electric-studio
Scanner static-checks@0.1.0 · commit 9881cff70e02. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
No static rules matched. This is not a safety guarantee.