Skip to main content

max / makenotwork

3.1 KB · 64 lines History Blame Raw
1 <!doctype html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>{{ title }}: Makenotwork</title>
7 <style>
8 /* The design system, inlined: an embed renders in an iframe on somebody
9 else's page and cannot link a stylesheet. Colour comes from makeover at
10 render time (platform default theme), spacing from makeover-geometry at
11 build time (Pointer density, no touch block). Do not write a literal
12 below: nothing would catch it drifting. */
13 {{ theme_css|safe }}
14 {{ geometry_css|safe }}
15 * { margin: 0; padding: 0; box-sizing: border-box; }
16 body {
17 font-family: Lato, -apple-system, sans-serif;
18 background: var(--surface-page); color: var(--content);
19 display: flex; align-items: center; justify-content: center;
20 min-height: 100vh; padding: var(--gap-section);
21 }
22 .card {
23 background: var(--surface-well); border-radius: 8px; overflow: hidden;
24 border: 1px solid var(--border);
25 display: flex; flex-direction: {% if is_horizontal %}row{% else %}column{% endif %}; width: 100%;
26 max-width: {% if is_horizontal %}600px{% else %}350px{% endif %};
27 }
28 .cover {
29 {% if is_horizontal %}width: 150px; height: 200px;{% else %}width: 100%; height: 200px;{% endif %}
30 background: var(--surface-raised); flex-shrink: 0;
31 }
32 .cover img { width: 100%; height: 100%; object-fit: cover; }
33 .body { padding: var(--gap-section); display: flex; flex-direction: column; flex: 1; min-width: 0; }
34 .title { font-family: 'Young Serif', Georgia, serif; font-size: 15px; font-weight: bold; margin-bottom: var(--gap-bound); }
35 .creator { font-family: 'IBM Plex Mono', monospace; font-size: 11px; opacity: 0.6; margin-bottom: var(--step-base); }
36 .creator a { color: inherit; text-decoration: none; }
37 .creator a:hover { text-decoration: underline; }
38 .desc { font-size: 12px; opacity: 0.8; line-height: 1.4; margin-bottom: var(--gap-section); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
39 .footer { display: flex; align-items: center; justify-content: space-between; margin-top: auto; }
40 .price { font-family: 'IBM Plex Mono', monospace; font-size: 14px; }
41 .buy-btn {
42 background: var(--action); color: var(--content-on-action); border: none; border-radius: 4px;
43 padding: var(--step-base) var(--gap-section); font-size: 12px; font-weight: 600;
44 cursor: pointer; text-decoration: none; white-space: nowrap;
45 }
46 .buy-btn:hover { background: var(--action-hover); }
47 </style>
48 </head>
49 <body>
50 <div class="card">
51 <div class="cover">{% if let Some(url) = cover_image_url %}<img src="{{ url }}" alt="">{% endif %}</div>
52 <div class="body">
53 <div class="title">{{ title }}</div>
54 <div class="creator">by <a href="{{ profile_url }}" target="_blank" rel="noopener">{{ creator_display_name }}</a></div>
55 {% if !description_excerpt.is_empty() %}<div class="desc">{{ description_excerpt }}</div>{% endif %}
56 <div class="footer">
57 <span class="price">{{ price_display }}</span>
58 <a class="buy-btn" href="{{ purchase_url }}" target="_blank" rel="noopener">{{ button_text }}</a>
59 </div>
60 </div>
61 </div>
62 </body>
63 </html>
64