chisel/step-service/.render/og-card.html
maverick 1a687ae188 feat: favicon + Open Graph / Twitter share tags with image
- Brand ◢ chisel-wedge favicon (SVG + 32px PNG + 180px apple-touch-icon)
- 1200x630 OG share card (Say it. Shape it. + isometric wireframe), rendered
  from HTML via headless Brave; source in step-service/.render/
- og:/twitter: meta with image, theme-color
- vite publicDir=static so assets ship in the build

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 19:08:23 +10:00

70 lines
3.3 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<link href="https://fonts.googleapis.com/css2?family=Syne:wght@600;700;800&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { width: 1200px; height: 630px; overflow: hidden; }
body {
background: #0B0B09;
font-family: "IBM Plex Mono", monospace;
color: #ece9e2;
position: relative;
}
/* blueprint grid */
.grid {
position: absolute; inset: 0;
background-image:
linear-gradient(#1b1b17 1px, transparent 1px),
linear-gradient(90deg, #1b1b17 1px, transparent 1px);
background-size: 40px 40px;
mask-image: radial-gradient(circle at 30% 45%, #000 30%, transparent 78%);
-webkit-mask-image: radial-gradient(circle at 30% 45%, #000 30%, transparent 78%);
}
.glow { position: absolute; width: 700px; height: 700px; right: -160px; top: -120px;
background: radial-gradient(circle, rgba(255,45,85,.16), transparent 62%); }
.wrap { position: relative; height: 100%; display: flex; align-items: center; padding: 0 80px; }
.left { flex: 1; }
.mark { display: flex; align-items: center; gap: 18px; margin-bottom: 30px; }
.wedge { width: 54px; height: 54px; }
.logo { font-family: "Syne", sans-serif; font-weight: 800; font-size: 60px; letter-spacing: 2px; color: #FF2D55; }
h1 { font-family: "Syne", sans-serif; font-weight: 700; font-size: 66px; line-height: 1.05; margin-bottom: 24px; }
h1 .red { color: #FF2D55; }
p { font-size: 24px; line-height: 1.5; color: #b8b4a9; max-width: 620px; }
.url { position: absolute; bottom: 46px; left: 80px; font-size: 22px; color: #8a877e; letter-spacing: 1px; }
.badges { position: absolute; bottom: 44px; right: 80px; display: flex; gap: 10px; }
.badge { border: 1px solid #2c2c26; border-radius: 20px; padding: 8px 16px; font-size: 18px; color: #b8b4a9; }
/* isometric wireframe cube on the right */
.art { width: 360px; height: 360px; margin-left: 40px; }
</style>
</head>
<body>
<div class="grid"></div>
<div class="glow"></div>
<div class="wrap">
<div class="left">
<div class="mark">
<svg class="wedge" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#141210"/><path d="M13 51 L51 51 L51 13 Z" fill="#FF2D55"/><path d="M13 51 L51 13" stroke="#FF9FB0" stroke-width="3" stroke-linecap="round"/></svg>
<span class="logo">CHISEL</span>
</div>
<h1>Say it.<br /><span class="red">Shape it.</span></h1>
<p>AI CAD — describe what you want built and watch it appear in 3D. Export real, editable STEP files.</p>
</div>
<svg class="art" viewBox="0 0 200 200" fill="none" stroke="#FF2D55" stroke-width="1.6" stroke-linejoin="round">
<!-- isometric cube -->
<path d="M100 20 L170 60 L170 140 L100 180 L30 140 L30 60 Z" opacity="0.35"/>
<path d="M100 20 L100 100 M100 100 L170 60 M100 100 L30 60" opacity="0.5"/>
<path d="M100 100 L100 180" opacity="0.5"/>
<path d="M30 60 L100 100 L170 60" opacity="0.9"/>
<path d="M30 140 L100 180 L170 140" opacity="0.5"/>
<circle cx="100" cy="100" r="4" fill="#FF2D55" stroke="none"/>
</svg>
</div>
<div class="url">chisel.theradicalparty.com</div>
<div class="badges">
<span class="badge">3D preview</span>
<span class="badge">STEP export</span>
</div>
</body>
</html>