Files
stork/static/logos.html
T
ilia b91ba3490c
CI / secret-scan (pull_request) Successful in 32s
CI / python-ci (pull_request) Successful in 50s
Add shareable multi-board links with paper UI and voice notes.
Boards use /b/<uid> with no invite password; restore renamable columns,
recordings, and seeded locale notes, with first column locked.
2026-08-07 14:47:28 -04:00

216 lines
6.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stork — pick a logo</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700&family=Source+Sans+3:wght@400;600;700&display=swap" rel="stylesheet" />
<style>
:root {
--ink: #18253a;
--muted: #5a6a7e;
--line: #c5d3e0;
--paper: #f8faf8;
--accent: #2a5f7a;
--wing: #b85c48;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: "Source Sans 3", system-ui, sans-serif;
color: var(--ink);
background:
radial-gradient(900px 420px at 85% -5%, #f0d8cf 0%, transparent 55%),
radial-gradient(1100px 520px at -5% 0%, #d6e4ef 0%, transparent 50%),
#eef3f7;
min-height: 100vh;
}
main { max-width: 1100px; margin: 0 auto; padding: 1.5rem 1rem 3rem; }
h1 {
font-family: Fraunces, Georgia, serif;
font-size: clamp(2rem, 5vw, 2.8rem);
margin: 0 0 0.35rem;
letter-spacing: -0.03em;
}
.sub { color: var(--muted); margin: 0 0 1.25rem; max-width: 40rem; }
.nav { margin-bottom: 1.25rem; }
.nav a { color: var(--accent); font-weight: 600; text-decoration: none; }
.grid {
display: grid;
gap: 1rem;
grid-template-columns: 1fr;
}
@media (min-width: 720px) {
.grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1000px) {
.grid { grid-template-columns: repeat(3, 1fr); }
}
.card {
background: var(--paper);
border: 1px solid var(--line);
border-radius: 18px;
overflow: hidden;
box-shadow: 0 12px 40px rgba(24, 37, 58, 0.08);
display: flex;
flex-direction: column;
}
.card.selected {
outline: 3px solid var(--wing);
outline-offset: 2px;
}
.card img {
width: 100%;
aspect-ratio: 1;
object-fit: cover;
display: block;
background: #f5f0e6;
}
.body { padding: 0.9rem 1rem 1.1rem; }
.num {
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--wing);
margin: 0 0 0.2rem;
}
.body h2 {
font-family: Fraunces, Georgia, serif;
font-size: 1.2rem;
margin: 0 0 0.35rem;
}
.body p { margin: 0 0 0.85rem; color: var(--muted); font-size: 0.95rem; }
button {
font: inherit;
font-weight: 600;
border: 1px solid var(--line);
background: #fff;
color: var(--ink);
border-radius: 12px;
padding: 0.55rem 0.85rem;
cursor: pointer;
}
button:hover { border-color: var(--accent); }
button.picked {
background: var(--ink);
color: #fff;
border-color: transparent;
}
.footer {
margin-top: 1.25rem;
padding: 1rem;
border-radius: 18px;
border: 1px solid var(--line);
background: color-mix(in srgb, var(--paper) 92%, white);
}
.footer strong { font-family: Fraunces, Georgia, serif; }
.favicon-row {
display: flex;
gap: 0.75rem;
flex-wrap: wrap;
margin-top: 0.75rem;
align-items: center;
}
.favicon-row img {
width: 48px;
height: 48px;
object-fit: cover;
border-radius: 10px;
border: 1px solid var(--line);
background: #f5f0e6;
}
</style>
</head>
<body>
<main>
<div class="nav"><a href="/">← Back to name board</a></div>
<h1>Pick a Stork mark</h1>
<p class="sub">All five logo concepts. Site currently uses <strong>concept 1</strong> (paper stork silhouette) as the header mark and favicon. <a href="/" style="color:var(--accent);font-weight:600;text-decoration:none">Name board →</a></p>
<div class="grid" id="grid"></div>
<div class="footer">
<p style="margin:0 0 0.35rem"><strong id="choice">No pick yet</strong></p>
<p style="margin:0;color:var(--muted);font-size:0.95rem">Favicon-size previews (how theyd look in a browser tab):</p>
<div class="favicon-row" id="favicons"></div>
</div>
</main>
<script>
const concepts = [
{
id: 1,
file: "01-silhouette.png",
title: "Paper stork silhouette",
blurb: "Single black stork in flight on cream paper. Quiet keepsake. Favicon = head + beak crop.",
},
{
id: 2,
file: "02-nest-monogram.png",
title: "Nest monogram",
blurb: "Letter S woven from twigs into a nest circle. Family-board metaphor without a cartoon bird.",
},
{
id: 3,
file: "03-hebrew-stamp.png",
title: "Hebrew שי stamp",
blurb: "Wax-seal with שי (“gift”) and Stork underneath. Favicon = the seal.",
},
{
id: 4,
file: "04-ribbon-stork.png",
title: "Name-ribbon stork",
blurb: "Stork carrying a tiny “Stork” banner. Classic birth announcement.",
},
{
id: 5,
file: "05-trilingual-arcs.png",
title: "Trilingual mark",
blurb: "Three thin arcs (en / ru / he) as a wing. Signals multilingual from the tab.",
},
];
const key = "stork_logo_pick";
let picked = Number(localStorage.getItem(key) || "1");
if (!localStorage.getItem(key)) localStorage.setItem(key, "1");
function render() {
const grid = document.getElementById("grid");
grid.innerHTML = concepts.map((c) => `
<article class="card ${picked === c.id ? "selected" : ""}" data-id="${c.id}">
<img src="/static/logos/${c.file}" alt="${c.title}" loading="lazy" />
<div class="body">
<p class="num">Concept ${c.id}</p>
<h2>${c.title}</h2>
<p>${c.blurb}</p>
<button type="button" class="${picked === c.id ? "picked" : ""}" data-pick="${c.id}">
${picked === c.id ? "Your pick" : "Pick this"}
</button>
</div>
</article>`).join("");
document.getElementById("favicons").innerHTML = concepts.map((c) =>
`<img src="/static/logos/${c.file}" alt="Favicon preview ${c.id}" title="${c.title}" />`
).join("");
const choice = concepts.find((c) => c.id === picked);
document.getElementById("choice").textContent = choice
? `Your pick: #${choice.id}${choice.title}`
: "No pick yet — tap Pick this on a card";
grid.querySelectorAll("button[data-pick]").forEach((btn) => {
btn.addEventListener("click", () => {
picked = Number(btn.dataset.pick);
localStorage.setItem(key, String(picked));
render();
});
});
}
render();
</script>
</body>
</html>