Alex Dunmow ed85f673f4 feat(y2k): Wave A theme-fleet build — 49 overrides, 7 templates, band persona (WO-TF-026)
Rebuild the y2k theme to the OVERRIDE-CONTRACT (frozen cms a0f07e2ae) with the
locked musician/band persona: liquid chrome, frosted-plastic bevels, gradient
mesh, marquees, glitter, a webring, and a dependency-free canvas metaball hero.

- All 49 mandatory builtin overrides in templates/overrides/y2k/ + manifest
  template_overrides; every content/provider field preserved from the frozen
  builtin default, only the chrome re-skinned (legacy button/card field reads
  already reconciled to link/style/label + text/media).
- 7 page templates: default, full-width, landing, article, blog-index, contact,
  auth — chrome header, glitter backdrop, chrome footer.
- Hero override ships a GO-BIG canvas liquid-chrome metaball showpiece
  (hero/landing only): lazy-init on view, prefers-reduced-motion honored, static
  chrome-mesh no-JS fallback, dependency-free.
- Persona blocks (5): waveform_player, tracklist, tour_dates, discography,
  webring_badge. Duplicating theme blocks became overrides; nft_gallery DELETED
  per WO.
- 5 dual-mode presets (frosted iMac plastic light + rave blacklight dark), all
  19 tokens, mode both, tuned dark.
- Bundled OFL fonts (Orbitron / Inter / Share Tech Mono) with licenses; all
  font-family via var(--font-heading|body|mono, fallback). Updated
  RECOMMENDED_FONTS/ICONS; required_icon_packs declared.
- Themed email-safe wrapper (tables, inline styles, chrome header, marquee
  footer). Master pages + demo seed (home/about/blog x3/contact/login) in band
  voice; contact form wired to seeded contact_submissions + row_inserted
  email-admins workflow.

Known platform gaps (OVERRIDE-CONTRACT §11/§12, unchanged): auth trio +
page-suggestions don't dispatch overrides yet; provider-backed overrides render
empty live lists until the codeless loader registers template sources. Files
authored faithful to builtin field/provider names; they light up when the cms
fix lands. Visual quality UNVERIFIED until Wave B.

Gates: `make` exit 0 (codeless y2k-0.2.0.bnp), `ninja plugin verify` OK,
check-safety exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:58:43 +08:00

54 lines
3.5 KiB
Plaintext

<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="x-apple-disable-message-reformatting">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{{ site_name }}</title>
<style type="text/css">
body, table, td, p, a, li { -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
table, td { mso-table-lspace: 0pt; mso-table-rspace: 0pt; }
img { -ms-interpolation-mode: bicubic; border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; }
body { margin: 0 !important; padding: 0 !important; width: 100% !important; }
a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; }
@media only screen and (max-width: 620px) {
.y2k-email-container { width: 100% !important; max-width: 100% !important; }
.y2k-email-content { padding-left: 20px !important; padding-right: 20px !important; }
}
</style>
</head>
<body style="background-color: {{ colors.background|default:"#0c0820" }}; margin: 0; padding: 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;">
{% if preview_text %}<div style="display:none;max-height:0;overflow:hidden;mso-hide:all;">{{ preview_text }}</div>{% endif %}
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="center" style="padding: 36px 12px; background-color: {{ colors.background|default:"#0c0820" }};">
<table role="presentation" class="y2k-email-container" width="600" cellspacing="0" cellpadding="0" border="0" style="max-width: 600px; background-color: {{ colors.card|default:"#150f2a" }}; border: 2px solid {{ colors.border|default:"#4d2b6f" }}; border-radius: 12px; overflow: hidden;">
<!-- gradient header bar -->
<tr>
<td style="padding: 18px 28px; background-image: linear-gradient(90deg, {{ colors.primary|default:"#ff4dd2" }} 0%, {{ colors.secondary|default:"#4ddff0" }} 100%); color: {{ colors.foreground|default:"#f4e8fa" }}; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;">
{% if site_name %}{{ site_name }}{% else %}y2k.fm{% endif %}
</td>
</tr>
<!-- body content -->
<tr>
<td class="y2k-email-content" style="padding: 32px 40px; color: {{ colors.foreground|default:"#f4e8fa" }}; font-size: 16px; line-height: 1.7;">{{ body|safe }}</td>
</tr>
<!-- marquee pill footer -->
<tr>
<td align="center" style="padding: 18px 28px; background-color: {{ colors.muted|default:"#1f1740" }};">
<table role="presentation" cellspacing="0" cellpadding="0" border="0">
<tr>
<td style="padding: 8px 18px; border-radius: 999px; background-image: linear-gradient(90deg, {{ colors.primary|default:"#ff4dd2" }} 0%, {{ colors.secondary|default:"#4ddff0" }} 100%); color: {{ colors.foreground|default:"#f4e8fa" }}; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;">* now playing * new drop friday * subscribe to the zine *</td>
</tr>
</table>
{% if unsubscribe_url %}<p style="margin: 12px 0 0; font-size: 11px; color: {{ colors.mutedForeground|default:"#b9a8d3" }};"><a href="{{ unsubscribe_url }}" style="color: {{ colors.mutedForeground|default:"#b9a8d3" }}; text-decoration: underline;">unsubscribe</a></p>{% endif %}
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>