feat(deck): SolLunar logo as cover brand + derived favicon

Add the SolLunar eclipse logo (sol/gold + lunar/circuit-blue). Title slide
hero shows the full lockup (webp) with a gold+blue solarpunk glow; the top
bar shows the cropped eclipse emblem + "SolLunar". Derive favicon.png/.ico
+ apple-touch-icon and the top-bar mark from the emblem. Page title → SolLunar.
Lab 484 remains the named tech-backbone entity in the content.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Patrick Mulligan 2026-08-01 01:20:31 +02:00
commit 27622f791d
8 changed files with 27 additions and 8 deletions

View file

@ -2,9 +2,12 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" href="/favicon.png" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Lab 484 — Investment Prospectus</title>
<meta name="theme-color" content="#0b1512" />
<title>SolLunar — Investment Prospectus</title>
</head>
<body>
<div id="app"></div>

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View file

@ -3,6 +3,7 @@ import { computed, ref, watch } from 'vue'
import { ChevronLeft, ChevronRight, Sun, Moon } from '@lucide/vue'
import { useDeck } from './useDeck'
import { brand } from './data'
import markUrl from '@/deck/assets/mark.png'
// theme: dark by default, persisted; a single `.dark` class flips every token
function readTheme() {
@ -73,8 +74,9 @@ function onTouchEnd(e: TouchEvent) {
<header
class="pointer-events-none absolute inset-x-0 top-0 z-20 flex items-center justify-between px-6 py-5 text-fg-muted"
>
<span class="font-display text-sm font-semibold tracking-wide text-fg">
{{ brand.short }}
<span class="flex items-center gap-2">
<img :src="markUrl" alt="SolLunar" class="size-7 rounded-md object-cover ring-1 ring-line" />
<span class="font-display text-sm font-semibold tracking-wide text-fg">SolLunar</span>
</span>
<div class="flex items-center gap-3">
<span class="text-xs uppercase tracking-[0.2em]">{{ current.label }}</span>

BIN
src/deck/assets/logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
src/deck/assets/mark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -4,6 +4,7 @@ import SlideFrame from '../components/SlideFrame.vue'
import PlaceholderBadge from '../components/PlaceholderBadge.vue'
import { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'
import { brand, surfaceEntities, accentText } from '../data'
import logoUrl from '@/deck/assets/logo.webp'
</script>
<template>
@ -14,11 +15,24 @@ import { brand, surfaceEntities, accentText } from '../data'
<PlaceholderBadge label="draft" />
</span>
<h1 class="font-display text-5xl font-bold tracking-tight text-fg sm:text-6xl lg:text-7xl">
{{ brand.name }}
</h1>
<!-- logo hero with a gold(sol) + blue(lunar) solarpunk glow -->
<div class="relative">
<div
class="pointer-events-none absolute -inset-10 -z-10 rounded-full opacity-70 blur-2xl motion-safe:animate-pulse"
style="
background:
radial-gradient(38% 55% at 30% 45%, hsl(42 95% 55% / 0.5), transparent 70%),
radial-gradient(38% 55% at 70% 55%, hsl(215 90% 58% / 0.5), transparent 70%);
"
/>
<img
:src="logoUrl"
alt="SolLunar — Energy · Intelligence · Harmony"
class="w-56 rounded-3xl shadow-2xl ring-1 ring-line-2 sm:w-64 lg:w-72"
/>
</div>
<p class="mt-6 max-w-2xl text-balance text-xl text-fg sm:text-2xl">
<p class="mt-7 max-w-2xl text-balance text-xl text-fg sm:text-2xl">
{{ brand.tagline }}
</p>