Files
football2801 3bd0b9a5a1
CI / test (push) Has been cancelled
design: favicon v2 (V-centric) + logo-placement mockups
Iteration after the atmospheric-redesign checkpoint. The earlier A/B/C/D
favicon set was scrapped — generic invented icons (roof, frame+horizon,
skyline, wax seal) that didn't tie to the brand's own glyph. New direction:
the yellow V from the wordmark, presented four ways. V-viewfinder (a V cut
out of navy showing the harbor photo inside) is the chosen path; refinement
3b crops to Camogli's coloured row-houses for a more brand-specific small
size reading.

Also adds three logo-placement mockups (PWA cold-launch splash, library
hero with the full wordmark logo, settings → about page) to give the
wordmark room to live beyond emails and login badges.

Self-contained: assets/ and spa/ copied into the design folder so the
mockups render without depending on neighbouring directories.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 10:25:09 -04:00

165 lines
5.7 KiB
CSS

/* Atmospheric design tokens — themes as dusks layered over the harbor photo.
The whole app shares the login's surface vocabulary. */
:root {
/* Type — same recipe as login */
--font-family: 'Nunito', system-ui, sans-serif;
--font-display: 'Marcellus', Georgia, serif;
--font-accent: 'Cormorant Garamond', Georgia, serif;
--font-mono: 'DM Mono', ui-monospace, monospace;
--text-xs: 11px; --text-sm: 13px; --text-base: 15px; --text-md: 17px;
--text-lg: 20px; --text-xl: 24px; --text-2xl: 28px; --text-3xl: 36px;
--space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
--space-5: 20px; --space-6: 24px; --space-8: 32px;
--radius-sm: 6px; --radius-md: 12px; --radius-lg: 20px; --radius-full: 9999px;
--duration-fast: 150ms; --duration-base: 250ms;
--ease-out: cubic-bezier(0, 0, 0.2, 1);
/* Brand layer — fixed regardless of theme. */
--brand-yellow: #f0d000;
--brand-yellow-soft: #c4a700;
/* Editorial recipes */
--type-display-xl: 400 var(--text-3xl)/1.05 var(--font-display);
--type-display-lg: 400 var(--text-2xl)/1.1 var(--font-display);
--type-display-md: 400 var(--text-xl)/1.15 var(--font-display);
--type-accent-md: 400 italic var(--text-md)/1.4 var(--font-accent);
--type-label: 700 var(--text-xs)/1 var(--font-mono);
}
/* ─── DUSKS ──────────────────────────────────────────────────────────────
Each dusk is:
--bg-base : the deep base color behind everything
--bg-tint : an rgba multiplied over the harbor photo (the "filter")
--glass : rgba background of cards (frosted, sits on photo)
--glass-2 : a more opaque variant for nav strips
--glass-bord : hairline border on glass surfaces
--accent : theme accent (was --color-primary) — CTAs that aren't brand
--accent-fg : text on accent
--text : main text on glass (always light)
--text-muted : muted text on glass
The yellow V brand constant survives across all dusks.
*/
/* OCEAN DUSK — default, closest to login */
[data-theme="ocean-dusk"], :root {
--bg-base: #06121f;
--bg-tint: rgba(8, 22, 38, 0.45);
--glass: rgba(10, 28, 48, 0.55);
--glass-2: rgba(8, 22, 38, 0.72);
--glass-bord: rgba(180, 210, 235, 0.18);
--accent: #4e9fc8;
--accent-fg: #06121f;
--text: #f4eed8;
--text-muted: #b8c8d8;
}
/* AMBER DUSK — successor to warm-craft */
[data-theme="amber-dusk"] {
--bg-base: #1a0d05;
--bg-tint: rgba(60, 25, 8, 0.45);
--glass: rgba(50, 22, 8, 0.55);
--glass-2: rgba(35, 14, 5, 0.72);
--glass-bord: rgba(230, 180, 130, 0.2);
--accent: #e89048;
--accent-fg: #1a0d05;
--text: #faecd0;
--text-muted: #d8b890;
}
/* SAGE DUSK — successor to sage-cream */
[data-theme="sage-dusk"] {
--bg-base: #081208;
--bg-tint: rgba(20, 40, 22, 0.45);
--glass: rgba(18, 38, 22, 0.55);
--glass-2: rgba(12, 26, 14, 0.72);
--glass-bord: rgba(180, 220, 180, 0.18);
--accent: #88c068;
--accent-fg: #081208;
--text: #ecf3e0;
--text-muted: #a8c0a0;
}
/* ROSE DUSK — warmer, classier replacement for playful-pop */
[data-theme="rose-dusk"] {
--bg-base: #1a060f;
--bg-tint: rgba(56, 16, 38, 0.45);
--glass: rgba(48, 14, 36, 0.55);
--glass-2: rgba(32, 8, 22, 0.72);
--glass-bord: rgba(230, 180, 200, 0.2);
--accent: #d878a0;
--accent-fg: #1a060f;
--text: #f8e8ec;
--text-muted: #c898ac;
}
/* MAUVE DUSK — replaces dusty-mauve */
[data-theme="mauve-dusk"] {
--bg-base: #100618;
--bg-tint: rgba(40, 18, 56, 0.45);
--glass: rgba(36, 14, 50, 0.55);
--glass-2: rgba(24, 10, 34, 0.72);
--glass-bord: rgba(210, 190, 230, 0.18);
--accent: #b890d8;
--accent-fg: #100618;
--text: #f0e8f8;
--text-muted: #b8a8c8;
}
/* HONEY DUSK — replaces honey-slate */
[data-theme="honey-dusk"] {
--bg-base: #18120a;
--bg-tint: rgba(48, 36, 14, 0.45);
--glass: rgba(42, 32, 12, 0.55);
--glass-2: rgba(28, 22, 8, 0.72);
--glass-bord: rgba(232, 200, 130, 0.22);
--accent: #e8c050;
--accent-fg: #18120a;
--text: #faf0d8;
--text-muted: #c8b888;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { background: var(--bg-base); color: var(--text); }
body {
font-family: var(--font-family);
font-size: var(--text-base);
line-height: 1.5;
min-height: 100dvh;
position: relative;
-webkit-font-smoothing: antialiased;
}
/* ─── PERMANENT ATMOSPHERIC BACKDROP ──────────────────────────────────── */
/* harbor photo fixed under everything */
body::before {
content: '';
position: fixed;
inset: 0;
background: url('../assets/harbor.jpg') center/cover no-repeat;
filter: brightness(0.6) saturate(0.85);
z-index: -3;
}
/* theme tint multiplied over photo */
body::after {
content: '';
position: fixed;
inset: 0;
background: var(--bg-tint);
mix-blend-mode: multiply;
z-index: -2;
pointer-events: none;
}
/* global vignette + film grain via one extra layer */
.atmosphere {
position: fixed;
inset: 0;
pointer-events: none;
z-index: -1;
background:
radial-gradient(ellipse 80% 70% at 50% 45%, transparent 0%, rgba(0,0,0,0.35) 70%, rgba(0,0,0,0.65) 100%),
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='320' height='320'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='5'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.1 0'/></filter><rect width='320' height='320' filter='url(%23n)'/></svg>");
}