191c9b08e0
Replace the off-brand "VIBRANT EDITION" CSS (generic SaaS blue/purple/ teal/pink) with a strict palette derived from icon.png and style_guide.md: --gold #FCCE38, --amber #F5A623, --pollen #FFE082, --sun-bloom #F9BB2F --midnight #181E37, --deep #162140, --comb-line #232230 --cream #FFF1D0 Spacing/radius scale mirrors iOS DesignSystem.swift (AppSpacing 4/8/12/ 16/24/32/48/64; AppRadius 4/8/12/16/20/24) so the web feels native to the same brand system. 56px button height, 16px card radius, identical elevation language. Page architecture: - Sticky translucent nav with hex brand mark (1+6 cluster) - Hero with iPhone frame mock showing real kanban view (overdue/due soon/in progress/done with priority dots and meta chips) - Cream "What's due, what's done, what's yours" pillars - Four feature deep-dives (residences, tasks/kanban, contractors, documents/warranties) with product UI mocks built from real app concepts - "Each cell, a task" comb section with JS-generated 8x10 honeycomb completion grid that fills more densely toward the top - iOS polish section: Home Screen widget mock with quick-complete, push notification with inline actions, Face ID lock, 11 themes - Sharing section with share-card mock (HIVE-7K2D-Q9 code + 3 keepers) - Free vs Pro pricing with "Most chosen" tag - Final CTA with brand mark + golden glow Honeycomb motif: - Brand mark uses gold-on-navy with a radial halo (no currentColor dependency — renders identically everywhere) - Hex grid background uses a properly tessellating flat-top tile (3 hexes per 126x73 unit, sharing full edges, no seams) - Hex bullets, hex pills, completion grid all flat-top per style guide Copy follows style_guide.md voice — calm, specific, no banned words (chore, simplified, seamless), sentence case throughout. Canonical tagline "A home is a hive. We'll help you keep it." used verbatim in the hero and footer. JS: mobile nav toggle, scroll-state nav, IntersectionObserver reveal, deterministic comb-grid generator. Respects prefers-reduced-motion. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1357 lines
33 KiB
CSS
1357 lines
33 KiB
CSS
/* ===================================================================
|
||
honeyDue — Landing styles
|
||
Amber on midnight. Cream as daylight. Hex as structure.
|
||
Tokens mirror iOS DesignSystem.swift (AppSpacing / AppRadius).
|
||
=================================================================== */
|
||
|
||
/* -------------------- Tokens -------------------- */
|
||
:root {
|
||
/* Brand color */
|
||
--gold: #FCCE38;
|
||
--amber: #F5A623;
|
||
--pollen: #FFE082;
|
||
--sun-bloom: #F9BB2F;
|
||
|
||
--midnight: #181E37;
|
||
--deep: #162140;
|
||
--comb-line: #232230;
|
||
|
||
--cream: #FFF1D0;
|
||
--cream-elev: #FFF7E1;
|
||
--white: #FFFFFF;
|
||
|
||
/* Semantic text */
|
||
--text-on-dark: #F5F2EA;
|
||
--text-muted-on-dark: rgba(245, 242, 234, 0.62);
|
||
--text-faint-on-dark: rgba(245, 242, 234, 0.38);
|
||
|
||
--text-on-light: #1A1A22;
|
||
--text-muted-on-light: rgba(26, 26, 34, 0.65);
|
||
--text-faint-on-light: rgba(26, 26, 34, 0.38);
|
||
|
||
/* Borders */
|
||
--border-on-dark: rgba(245, 242, 234, 0.10);
|
||
--border-on-dark-strong: rgba(245, 242, 234, 0.18);
|
||
--border-on-light: rgba(26, 26, 34, 0.08);
|
||
--border-on-light-strong: rgba(26, 26, 34, 0.16);
|
||
|
||
/* Status */
|
||
--error: #DD1C1A;
|
||
|
||
/* Type */
|
||
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif;
|
||
|
||
--t-display: clamp(2.5rem, 5.6vw, 4.25rem);
|
||
--t-h2: clamp(1.85rem, 3.6vw, 2.75rem);
|
||
--t-h3: clamp(1.25rem, 1.8vw, 1.625rem);
|
||
--t-lead: clamp(1.0625rem, 1.3vw, 1.25rem);
|
||
--t-body: 1rem;
|
||
--t-sm: 0.9375rem;
|
||
--t-xs: 0.8125rem;
|
||
|
||
/* Spacing — mirrors AppSpacing (4/8/12/16/24/32/48/64) */
|
||
--s-1: 4px;
|
||
--s-2: 8px;
|
||
--s-3: 12px;
|
||
--s-4: 16px;
|
||
--s-5: 24px;
|
||
--s-6: 32px;
|
||
--s-7: 48px;
|
||
--s-8: 64px;
|
||
--s-9: 96px;
|
||
--s-10: 128px;
|
||
|
||
/* Radius — mirrors AppRadius (4/8/12/16/20/24) */
|
||
--r-1: 4px;
|
||
--r-2: 8px;
|
||
--r-3: 12px;
|
||
--r-4: 16px;
|
||
--r-5: 20px;
|
||
--r-6: 24px;
|
||
--r-pill: 9999px;
|
||
|
||
/* Shadows — calibrated for amber on midnight */
|
||
--shadow-soft: 0 8px 32px rgba(11, 17, 36, 0.35);
|
||
--shadow-deep: 0 24px 64px rgba(11, 17, 36, 0.55);
|
||
--shadow-glow: 0 0 96px rgba(252, 206, 56, 0.32);
|
||
--shadow-light: 0 12px 32px rgba(56, 38, 18, 0.10);
|
||
|
||
/* Layout */
|
||
--container-max: 1180px;
|
||
--nav-height: 64px;
|
||
|
||
/* Faint hex grid as a data-URI background.
|
||
Flat-top honeycomb tessellation: tile 126×73, 3 hexes per tile (one
|
||
full + two straddling top/bottom edges). Side length s=42, height
|
||
h≈73. Hex A center (21,36), B (84,0), C (84,73). Adjacent hexes
|
||
share full edges so the tile repeats with no seams or gaps. */
|
||
--hex-grid-dark: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='126' height='73' viewBox='0 0 126 73'><g fill='none' stroke='%23F5F2EA' stroke-opacity='0.07' stroke-width='1'><polygon points='0,0 42,0 63,36 42,73 0,73 -21,36'/><polygon points='63,-36 105,-36 126,0 105,36 63,36 42,0'/><polygon points='63,36 105,36 126,73 105,109 63,109 42,73'/></g></svg>");
|
||
}
|
||
|
||
/* -------------------- Reset / base -------------------- */
|
||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||
|
||
html { scroll-behavior: smooth; }
|
||
|
||
body {
|
||
font-family: var(--font-sans);
|
||
font-size: var(--t-body);
|
||
line-height: 1.6;
|
||
color: var(--text-on-dark);
|
||
background: var(--midnight);
|
||
-webkit-font-smoothing: antialiased;
|
||
-moz-osx-font-smoothing: grayscale;
|
||
text-rendering: optimizeLegibility;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
img, svg { display: block; max-width: 100%; }
|
||
a { color: inherit; text-decoration: none; }
|
||
button { font-family: inherit; cursor: pointer; }
|
||
ul { list-style: none; }
|
||
em { font-style: italic; color: var(--gold); font-weight: 500; }
|
||
|
||
::selection { background: var(--gold); color: var(--midnight); }
|
||
|
||
/* -------------------- Layout primitives -------------------- */
|
||
.container {
|
||
width: 100%;
|
||
max-width: var(--container-max);
|
||
margin-inline: auto;
|
||
padding-inline: var(--s-5);
|
||
}
|
||
|
||
.eyebrow {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: var(--s-2);
|
||
font-size: var(--t-xs);
|
||
font-weight: 600;
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
color: var(--text-muted-on-dark);
|
||
margin-bottom: var(--s-4);
|
||
}
|
||
.eyebrow--gold { color: var(--gold); }
|
||
.eyebrow--center { display: flex; justify-content: center; }
|
||
.eyebrow-mark { width: 8px; height: 8px; color: var(--gold); }
|
||
|
||
.section-title {
|
||
font-size: var(--t-h2);
|
||
font-weight: 700;
|
||
line-height: 1.1;
|
||
letter-spacing: -0.02em;
|
||
margin-bottom: var(--s-4);
|
||
color: var(--text-on-dark);
|
||
}
|
||
.section-title--light { color: var(--text-on-light); }
|
||
|
||
.section-sub {
|
||
font-size: var(--t-lead);
|
||
line-height: 1.55;
|
||
color: var(--text-muted-on-dark);
|
||
max-width: 60ch;
|
||
margin-bottom: var(--s-7);
|
||
}
|
||
.section-sub--light { color: var(--text-muted-on-light); }
|
||
|
||
/* Reveal-on-scroll — JS toggles .is-visible */
|
||
.reveal {
|
||
opacity: 0;
|
||
transform: translateY(16px);
|
||
transition: opacity 0.7s cubic-bezier(0.2, 0.7, 0.2, 1), transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1);
|
||
will-change: opacity, transform;
|
||
}
|
||
.reveal.is-visible {
|
||
opacity: 1;
|
||
transform: none;
|
||
}
|
||
|
||
/* -------------------- Buttons -------------------- */
|
||
.btn {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: var(--s-2);
|
||
height: 56px;
|
||
padding: 0 var(--s-6);
|
||
border-radius: var(--r-3);
|
||
font-weight: 600;
|
||
font-size: var(--t-body);
|
||
line-height: 1;
|
||
transition: transform 0.15s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;
|
||
white-space: nowrap;
|
||
border: 1px solid transparent;
|
||
user-select: none;
|
||
}
|
||
.btn:hover { transform: translateY(-1px); }
|
||
.btn:active { transform: translateY(0); }
|
||
.btn:focus-visible {
|
||
outline: 2px solid var(--gold);
|
||
outline-offset: 3px;
|
||
}
|
||
|
||
.btn-primary {
|
||
background: var(--gold);
|
||
color: var(--midnight);
|
||
box-shadow: 0 8px 24px rgba(252, 206, 56, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.4);
|
||
}
|
||
.btn-primary:hover {
|
||
background: var(--pollen);
|
||
box-shadow: 0 12px 32px rgba(252, 206, 56, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.5);
|
||
}
|
||
|
||
.btn-ghost {
|
||
background: transparent;
|
||
color: var(--text-on-dark);
|
||
border-color: var(--border-on-dark-strong);
|
||
}
|
||
.btn-ghost:hover {
|
||
background: rgba(245, 242, 234, 0.06);
|
||
border-color: rgba(245, 242, 234, 0.32);
|
||
}
|
||
|
||
.btn-block { width: 100%; }
|
||
.btn-sm { height: 40px; padding: 0 var(--s-4); font-size: var(--t-sm); }
|
||
.btn-lg { height: 56px; padding: 0 var(--s-6); }
|
||
|
||
.btn-icon { width: 18px; height: 18px; }
|
||
|
||
/* -------------------- Navigation -------------------- */
|
||
.nav {
|
||
position: sticky;
|
||
top: 0;
|
||
z-index: 50;
|
||
height: var(--nav-height);
|
||
background: rgba(24, 30, 55, 0.72);
|
||
backdrop-filter: saturate(140%) blur(18px);
|
||
-webkit-backdrop-filter: saturate(140%) blur(18px);
|
||
border-bottom: 1px solid transparent;
|
||
transition: border-color 0.2s ease, background 0.2s ease;
|
||
}
|
||
.nav.is-scrolled {
|
||
border-bottom-color: var(--border-on-dark);
|
||
background: rgba(22, 28, 50, 0.88);
|
||
}
|
||
|
||
.nav-container {
|
||
height: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
gap: var(--s-5);
|
||
}
|
||
|
||
.nav-brand {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 0;
|
||
color: var(--text-on-dark);
|
||
}
|
||
|
||
.brand-wordmark {
|
||
font-weight: 700;
|
||
font-size: 1.0625rem;
|
||
letter-spacing: -0.02em;
|
||
color: var(--text-on-dark);
|
||
}
|
||
.brand-wordmark-strong { color: var(--gold); }
|
||
|
||
.nav-links {
|
||
display: none;
|
||
align-items: center;
|
||
gap: var(--s-6);
|
||
}
|
||
.nav-link {
|
||
font-size: var(--t-sm);
|
||
color: var(--text-muted-on-dark);
|
||
font-weight: 500;
|
||
transition: color 0.15s ease;
|
||
}
|
||
.nav-link:hover { color: var(--text-on-dark); }
|
||
|
||
.nav-cta { display: none; }
|
||
|
||
.nav-toggle {
|
||
background: none;
|
||
border: 0;
|
||
width: 36px;
|
||
height: 36px;
|
||
display: inline-flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
align-items: center;
|
||
gap: 5px;
|
||
color: var(--text-on-dark);
|
||
}
|
||
.nav-toggle span {
|
||
display: block;
|
||
width: 22px;
|
||
height: 1.75px;
|
||
background: currentColor;
|
||
transition: transform 0.2s ease, opacity 0.2s ease;
|
||
}
|
||
.nav-toggle.is-active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
|
||
.nav-toggle.is-active span:nth-child(2) { opacity: 0; }
|
||
.nav-toggle.is-active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
|
||
|
||
@media (min-width: 768px) {
|
||
.nav-links { display: flex; }
|
||
.nav-cta { display: inline-flex; }
|
||
.nav-toggle { display: none; }
|
||
}
|
||
|
||
/* Mobile menu open */
|
||
.nav-links.is-open {
|
||
display: flex;
|
||
position: absolute;
|
||
top: var(--nav-height);
|
||
left: 0;
|
||
right: 0;
|
||
flex-direction: column;
|
||
gap: 0;
|
||
background: var(--midnight);
|
||
border-bottom: 1px solid var(--border-on-dark);
|
||
padding: var(--s-3) 0;
|
||
}
|
||
.nav-links.is-open .nav-link {
|
||
padding: var(--s-3) var(--s-5);
|
||
width: 100%;
|
||
}
|
||
|
||
/* -------------------- Hex field background -------------------- */
|
||
.hex-field {
|
||
position: absolute;
|
||
inset: 0;
|
||
background-image: var(--hex-grid-dark);
|
||
background-size: 126px 73px;
|
||
background-position: center;
|
||
pointer-events: none;
|
||
mask-image: radial-gradient(ellipse at center, black 30%, transparent 80%);
|
||
-webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 80%);
|
||
opacity: 0.85;
|
||
}
|
||
.hex-field--soft {
|
||
mask-image: radial-gradient(ellipse at center, black 0%, transparent 70%);
|
||
-webkit-mask-image: radial-gradient(ellipse at center, black 0%, transparent 70%);
|
||
opacity: 0.5;
|
||
}
|
||
|
||
/* -------------------- Hero -------------------- */
|
||
.hero {
|
||
position: relative;
|
||
overflow: hidden;
|
||
background: radial-gradient(ellipse 90% 60% at 30% 0%, #1B2547 0%, var(--midnight) 50%, var(--deep) 100%);
|
||
padding: var(--s-9) 0;
|
||
}
|
||
.hero-glow {
|
||
position: absolute;
|
||
top: -120px;
|
||
right: -160px;
|
||
width: 640px;
|
||
height: 640px;
|
||
border-radius: 50%;
|
||
background: radial-gradient(circle, rgba(252, 206, 56, 0.32) 0%, rgba(252, 206, 56, 0.08) 35%, transparent 65%);
|
||
filter: blur(20px);
|
||
pointer-events: none;
|
||
}
|
||
|
||
.hero-container {
|
||
position: relative;
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: var(--s-8);
|
||
align-items: center;
|
||
}
|
||
|
||
.hero-content { max-width: 36rem; }
|
||
.hero-title {
|
||
font-size: var(--t-display);
|
||
font-weight: 800;
|
||
line-height: 1.02;
|
||
letter-spacing: -0.035em;
|
||
margin-bottom: var(--s-5);
|
||
color: var(--text-on-dark);
|
||
}
|
||
.hero-title em {
|
||
font-style: italic;
|
||
font-weight: 700;
|
||
color: var(--gold);
|
||
}
|
||
|
||
.hero-sub {
|
||
font-size: var(--t-lead);
|
||
line-height: 1.55;
|
||
color: var(--text-muted-on-dark);
|
||
margin-bottom: var(--s-6);
|
||
max-width: 32rem;
|
||
}
|
||
|
||
.hero-cta {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: var(--s-3);
|
||
margin-bottom: var(--s-5);
|
||
}
|
||
|
||
.hero-trust {
|
||
font-size: var(--t-sm);
|
||
color: var(--text-faint-on-dark);
|
||
}
|
||
|
||
/* iPhone mock */
|
||
.hero-visual {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
position: relative;
|
||
}
|
||
|
||
.iphone {
|
||
position: relative;
|
||
width: 300px;
|
||
max-width: 100%;
|
||
animation: heroFloat 8s ease-in-out infinite;
|
||
}
|
||
@keyframes heroFloat {
|
||
0%, 100% { transform: translateY(0); }
|
||
50% { transform: translateY(-8px); }
|
||
}
|
||
|
||
.iphone-frame {
|
||
position: relative;
|
||
aspect-ratio: 9 / 19.5;
|
||
background: #0A0E20;
|
||
border-radius: 44px;
|
||
padding: 8px;
|
||
box-shadow:
|
||
0 0 0 1.5px rgba(245, 242, 234, 0.08),
|
||
0 60px 120px -30px rgba(11, 17, 36, 0.85),
|
||
0 24px 48px -12px rgba(11, 17, 36, 0.5),
|
||
0 0 80px rgba(252, 206, 56, 0.18);
|
||
}
|
||
|
||
.iphone-notch {
|
||
position: absolute;
|
||
top: 14px;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
width: 96px;
|
||
height: 26px;
|
||
background: #000;
|
||
border-radius: 16px;
|
||
z-index: 2;
|
||
}
|
||
|
||
.iphone-screen {
|
||
width: 100%;
|
||
height: 100%;
|
||
background: linear-gradient(180deg, #11172F 0%, #181E37 60%, #1A2240 100%);
|
||
border-radius: 36px;
|
||
overflow: hidden;
|
||
display: flex;
|
||
flex-direction: column;
|
||
position: relative;
|
||
}
|
||
|
||
.iphone-statusbar {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
padding: 14px 22px 6px;
|
||
font-size: 12px;
|
||
font-weight: 600;
|
||
color: var(--text-on-dark);
|
||
}
|
||
.iphone-statusbar-right { display: inline-flex; gap: 3px; }
|
||
.sb-dot {
|
||
width: 4px; height: 4px; border-radius: 50%;
|
||
background: var(--text-on-dark);
|
||
}
|
||
.sb-dot--off { background: var(--text-faint-on-dark); }
|
||
|
||
.iphone-titlebar {
|
||
padding: 18px 18px 10px;
|
||
}
|
||
.iphone-title {
|
||
display: block;
|
||
font-size: 22px;
|
||
font-weight: 700;
|
||
letter-spacing: -0.02em;
|
||
color: var(--text-on-dark);
|
||
}
|
||
.iphone-subtitle {
|
||
display: block;
|
||
font-size: 12px;
|
||
color: var(--text-muted-on-dark);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
.iphone-tabs {
|
||
display: flex;
|
||
gap: 6px;
|
||
padding: 4px 18px 12px;
|
||
overflow-x: auto;
|
||
scrollbar-width: none;
|
||
}
|
||
.iphone-tabs::-webkit-scrollbar { display: none; }
|
||
.iphone-tab {
|
||
flex: 0 0 auto;
|
||
padding: 6px 10px;
|
||
font-size: 11px;
|
||
font-weight: 500;
|
||
color: var(--text-muted-on-dark);
|
||
background: rgba(245, 242, 234, 0.06);
|
||
border-radius: var(--r-pill);
|
||
white-space: nowrap;
|
||
}
|
||
.iphone-tab--active {
|
||
color: var(--midnight);
|
||
background: var(--gold);
|
||
}
|
||
|
||
.iphone-cards {
|
||
flex: 1;
|
||
padding: 0 14px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.task-card {
|
||
background: rgba(245, 242, 234, 0.04);
|
||
border: 1px solid var(--border-on-dark);
|
||
border-radius: var(--r-3);
|
||
padding: 10px 12px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 6px;
|
||
}
|
||
.task-card--overdue {
|
||
border-color: rgba(221, 28, 26, 0.35);
|
||
background: linear-gradient(180deg, rgba(221, 28, 26, 0.10), rgba(221, 28, 26, 0.04));
|
||
}
|
||
.task-card--done {
|
||
background: linear-gradient(180deg, rgba(252, 206, 56, 0.14), rgba(252, 206, 56, 0.04));
|
||
border-color: rgba(252, 206, 56, 0.35);
|
||
}
|
||
.task-card-row {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
font-size: 12.5px;
|
||
font-weight: 600;
|
||
color: var(--text-on-dark);
|
||
}
|
||
.task-title { flex: 1; }
|
||
.task-card-meta {
|
||
display: flex;
|
||
gap: 6px;
|
||
flex-wrap: wrap;
|
||
}
|
||
.meta-chip {
|
||
font-size: 10px;
|
||
font-weight: 500;
|
||
padding: 3px 7px;
|
||
border-radius: var(--r-pill);
|
||
background: rgba(245, 242, 234, 0.08);
|
||
color: var(--text-muted-on-dark);
|
||
}
|
||
.meta-chip--overdue { background: rgba(221, 28, 26, 0.18); color: #FFB8B6; }
|
||
.meta-chip--done { background: rgba(252, 206, 56, 0.22); color: var(--midnight); font-weight: 600; }
|
||
|
||
.prio-dot {
|
||
width: 8px;
|
||
height: 8px;
|
||
border-radius: 50%;
|
||
flex-shrink: 0;
|
||
}
|
||
.prio-dot--high { background: var(--error); }
|
||
.prio-dot--med { background: var(--gold); }
|
||
.prio-dot--low { background: rgba(245, 242, 234, 0.35); }
|
||
|
||
.task-done {
|
||
width: 14px;
|
||
height: 14px;
|
||
color: var(--gold);
|
||
flex-shrink: 0;
|
||
}
|
||
.task-done--sm { width: 12px; height: 12px; }
|
||
|
||
.iphone-tabbar {
|
||
margin-top: auto;
|
||
display: flex;
|
||
justify-content: space-around;
|
||
align-items: center;
|
||
padding: 10px 16px 18px;
|
||
border-top: 1px solid var(--border-on-dark);
|
||
background: rgba(11, 17, 36, 0.5);
|
||
}
|
||
.iphone-tabbar-item {
|
||
font-size: 10px;
|
||
color: var(--text-faint-on-dark);
|
||
display: inline-flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
gap: 3px;
|
||
}
|
||
.iphone-tabbar-item svg {
|
||
width: 14px;
|
||
height: 14px;
|
||
}
|
||
.iphone-tabbar-item--active { color: var(--gold); }
|
||
|
||
@media (min-width: 1024px) {
|
||
.hero { padding: var(--s-10) 0; }
|
||
.hero-container {
|
||
grid-template-columns: 1.05fr 1fr;
|
||
gap: var(--s-8);
|
||
}
|
||
.iphone { width: 340px; }
|
||
}
|
||
|
||
/* -------------------- Trust strip -------------------- */
|
||
.trust {
|
||
background: var(--deep);
|
||
border-top: 1px solid var(--border-on-dark);
|
||
border-bottom: 1px solid var(--border-on-dark);
|
||
padding: var(--s-5) 0;
|
||
}
|
||
.trust-container {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
align-items: center;
|
||
gap: var(--s-3) var(--s-7);
|
||
}
|
||
.trust-item {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: var(--s-2);
|
||
font-size: var(--t-sm);
|
||
font-weight: 500;
|
||
color: var(--text-muted-on-dark);
|
||
}
|
||
.trust-mark {
|
||
width: 8px; height: 8px;
|
||
color: var(--gold);
|
||
}
|
||
|
||
/* -------------------- Pillars -------------------- */
|
||
.pillars {
|
||
background: var(--cream);
|
||
color: var(--text-on-light);
|
||
padding: var(--s-9) 0;
|
||
text-align: center;
|
||
position: relative;
|
||
}
|
||
.pillars .section-title { color: var(--text-on-light); }
|
||
.pillars .section-sub { color: var(--text-muted-on-light); margin-inline: auto; margin-bottom: var(--s-8); }
|
||
.pillars .eyebrow { color: var(--amber); }
|
||
|
||
.pillars-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: var(--s-6);
|
||
text-align: left;
|
||
}
|
||
|
||
.pillar {
|
||
background: var(--cream-elev);
|
||
border: 1px solid var(--border-on-light);
|
||
border-radius: var(--r-5);
|
||
padding: var(--s-6);
|
||
box-shadow: var(--shadow-light);
|
||
transition: transform 0.25s ease, box-shadow 0.25s ease;
|
||
}
|
||
.pillar:hover {
|
||
transform: translateY(-3px);
|
||
box-shadow: 0 20px 40px rgba(56, 38, 18, 0.14);
|
||
}
|
||
.pillar-kicker {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
min-height: 32px;
|
||
padding: 0 12px;
|
||
margin-bottom: var(--s-4);
|
||
border-radius: var(--r-pill);
|
||
background: rgba(245, 166, 35, 0.12);
|
||
border: 1px solid rgba(245, 166, 35, 0.24);
|
||
font-size: var(--t-xs);
|
||
font-weight: 700;
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
color: var(--amber);
|
||
}
|
||
|
||
.pillar-title {
|
||
font-size: var(--t-h3);
|
||
font-weight: 700;
|
||
letter-spacing: -0.015em;
|
||
margin-bottom: var(--s-3);
|
||
color: var(--text-on-light);
|
||
}
|
||
.pillar-desc {
|
||
font-size: var(--t-body);
|
||
line-height: 1.6;
|
||
color: var(--text-muted-on-light);
|
||
}
|
||
.pillar-desc em { color: var(--midnight); font-style: italic; font-weight: 600; }
|
||
|
||
@media (min-width: 768px) {
|
||
.pillars-grid { grid-template-columns: repeat(3, 1fr); }
|
||
}
|
||
|
||
/* -------------------- Features -------------------- */
|
||
.features {
|
||
background: var(--midnight);
|
||
padding: var(--s-9) 0;
|
||
position: relative;
|
||
}
|
||
|
||
.feature {
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: var(--s-7);
|
||
align-items: center;
|
||
padding: var(--s-7) 0;
|
||
}
|
||
.feature + .feature { border-top: 1px solid var(--border-on-dark); }
|
||
|
||
.feature-content { max-width: 36rem; }
|
||
.feature-title {
|
||
font-size: var(--t-h2);
|
||
font-weight: 700;
|
||
line-height: 1.1;
|
||
letter-spacing: -0.02em;
|
||
margin-bottom: var(--s-4);
|
||
color: var(--text-on-dark);
|
||
}
|
||
.feature-desc {
|
||
font-size: var(--t-lead);
|
||
line-height: 1.6;
|
||
color: var(--text-muted-on-dark);
|
||
margin-bottom: var(--s-5);
|
||
}
|
||
.feature-desc em { color: var(--gold); font-style: italic; font-weight: 500; }
|
||
|
||
.feature-list {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--s-3);
|
||
}
|
||
.feature-list li {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
gap: var(--s-3);
|
||
font-size: var(--t-body);
|
||
color: var(--text-on-dark);
|
||
}
|
||
.feature-list--light li { color: var(--text-on-light); }
|
||
|
||
.li-mark {
|
||
width: 12px;
|
||
height: 12px;
|
||
color: var(--gold);
|
||
flex-shrink: 0;
|
||
margin-top: 7px;
|
||
}
|
||
.li-mark--dim { color: var(--text-faint-on-light); }
|
||
|
||
.feature-visual {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
@media (min-width: 1024px) {
|
||
.feature {
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: var(--s-8);
|
||
padding: var(--s-8) 0;
|
||
}
|
||
.feature--right .feature-content { order: 2; }
|
||
.feature--right .feature-visual { order: 1; }
|
||
}
|
||
|
||
/* UI mock card (residences / contractors / docs panels) */
|
||
.ui-card {
|
||
width: 100%;
|
||
max-width: 460px;
|
||
background: linear-gradient(180deg, rgba(245, 242, 234, 0.04), rgba(245, 242, 234, 0.01));
|
||
border: 1px solid var(--border-on-dark);
|
||
border-radius: var(--r-5);
|
||
padding: var(--s-5);
|
||
box-shadow: var(--shadow-soft);
|
||
backdrop-filter: blur(8px);
|
||
-webkit-backdrop-filter: blur(8px);
|
||
}
|
||
.ui-card-head {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: var(--s-4);
|
||
}
|
||
.ui-card-eyebrow {
|
||
font-size: var(--t-xs);
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
color: var(--text-muted-on-dark);
|
||
}
|
||
.ui-card-tag {
|
||
font-size: var(--t-xs);
|
||
font-weight: 600;
|
||
color: var(--gold);
|
||
background: rgba(252, 206, 56, 0.14);
|
||
padding: 2px 10px;
|
||
border-radius: var(--r-pill);
|
||
}
|
||
|
||
.ui-row {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: var(--s-3);
|
||
padding: var(--s-3) 0;
|
||
border-top: 1px solid var(--border-on-dark);
|
||
}
|
||
.ui-row:first-of-type { border-top: 0; }
|
||
.ui-row-body { flex: 1; min-width: 0; }
|
||
.ui-row-body strong {
|
||
display: block;
|
||
font-size: var(--t-sm);
|
||
font-weight: 600;
|
||
color: var(--text-on-dark);
|
||
margin-bottom: 2px;
|
||
}
|
||
.ui-row-body small {
|
||
display: block;
|
||
font-size: 0.8125rem;
|
||
color: var(--text-muted-on-dark);
|
||
}
|
||
|
||
.ui-row-hex {
|
||
width: 30px;
|
||
height: 26px;
|
||
flex-shrink: 0;
|
||
color: rgba(252, 206, 56, 0.46);
|
||
}
|
||
.ui-row-hex--filled {
|
||
color: var(--gold);
|
||
filter: drop-shadow(0 6px 10px rgba(252, 206, 56, 0.14));
|
||
}
|
||
|
||
.ui-row-pill {
|
||
font-size: var(--t-xs);
|
||
font-weight: 600;
|
||
padding: 4px 10px;
|
||
border-radius: var(--r-pill);
|
||
background: rgba(245, 242, 234, 0.08);
|
||
color: var(--text-muted-on-dark);
|
||
}
|
||
.ui-row-pill--warn { background: rgba(245, 166, 35, 0.18); color: var(--gold); }
|
||
.ui-row-pill--ok { background: rgba(252, 206, 56, 0.16); color: var(--gold); }
|
||
|
||
.fav { color: var(--gold); margin-left: 4px; }
|
||
|
||
/* Warranty badges */
|
||
.warranty-badge {
|
||
flex-shrink: 0;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 50px;
|
||
height: 28px;
|
||
border-radius: var(--r-2);
|
||
font-size: 0.6875rem;
|
||
font-weight: 700;
|
||
letter-spacing: 0.04em;
|
||
text-transform: uppercase;
|
||
}
|
||
.warranty-badge--active { background: rgba(252, 206, 56, 0.16); color: var(--gold); }
|
||
.warranty-badge--soon { background: rgba(245, 166, 35, 0.22); color: #FFC97A; }
|
||
.warranty-badge--doc { background: rgba(245, 242, 234, 0.10); color: var(--text-on-dark); }
|
||
|
||
/* Kanban mock */
|
||
.kanban {
|
||
display: grid;
|
||
grid-template-columns: repeat(5, minmax(140px, 1fr));
|
||
gap: var(--s-3);
|
||
width: 100%;
|
||
overflow-x: auto;
|
||
padding-bottom: var(--s-3);
|
||
scrollbar-width: thin;
|
||
}
|
||
.kanban-col {
|
||
background: rgba(245, 242, 234, 0.03);
|
||
border: 1px solid var(--border-on-dark);
|
||
border-radius: var(--r-4);
|
||
padding: var(--s-3);
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--s-2);
|
||
min-width: 140px;
|
||
}
|
||
.kanban-col-label {
|
||
font-size: 0.6875rem;
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.06em;
|
||
color: var(--text-muted-on-dark);
|
||
padding-bottom: var(--s-2);
|
||
}
|
||
.kanban-col-label--overdue { color: #FF8584; }
|
||
.kanban-col-label--inprogress { color: var(--gold); }
|
||
.kanban-col-label--done { color: var(--gold); }
|
||
|
||
.kanban-card {
|
||
background: var(--midnight);
|
||
border: 1px solid var(--border-on-dark);
|
||
border-radius: var(--r-3);
|
||
padding: var(--s-3);
|
||
font-size: 0.8125rem;
|
||
font-weight: 500;
|
||
color: var(--text-on-dark);
|
||
display: flex;
|
||
align-items: center;
|
||
gap: var(--s-2);
|
||
line-height: 1.3;
|
||
}
|
||
.kanban-card--inprogress { border-color: rgba(252, 206, 56, 0.35); }
|
||
.kanban-card--done {
|
||
background: linear-gradient(180deg, rgba(252, 206, 56, 0.16), rgba(252, 206, 56, 0.04));
|
||
border-color: rgba(252, 206, 56, 0.32);
|
||
color: var(--pollen);
|
||
}
|
||
|
||
/* -------------------- Comb (completion grid) -------------------- */
|
||
.comb {
|
||
background: var(--cream);
|
||
color: var(--text-on-light);
|
||
padding: var(--s-9) 0;
|
||
overflow: hidden;
|
||
}
|
||
.comb-container {
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: var(--s-7);
|
||
align-items: center;
|
||
}
|
||
.comb-copy .eyebrow { color: var(--amber); }
|
||
|
||
.comb-stats {
|
||
display: flex;
|
||
gap: var(--s-7);
|
||
margin-top: var(--s-5);
|
||
flex-wrap: wrap;
|
||
}
|
||
.comb-stat-num {
|
||
display: block;
|
||
font-size: clamp(1.75rem, 3vw, 2.5rem);
|
||
font-weight: 800;
|
||
letter-spacing: -0.02em;
|
||
color: var(--midnight);
|
||
}
|
||
.comb-stat-label {
|
||
display: block;
|
||
font-size: var(--t-sm);
|
||
color: var(--text-muted-on-light);
|
||
}
|
||
|
||
.comb-visual {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
.comb-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(8, 1fr);
|
||
gap: 6px;
|
||
max-width: 480px;
|
||
width: 100%;
|
||
}
|
||
.comb-cell {
|
||
aspect-ratio: 1 / 0.866;
|
||
clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
|
||
background: rgba(26, 26, 34, 0.08);
|
||
transition: background 0.4s ease;
|
||
}
|
||
.comb-cell.is-filled { background: var(--gold); }
|
||
.comb-cell.is-faint { background: rgba(252, 206, 56, 0.32); }
|
||
|
||
@media (min-width: 1024px) {
|
||
.comb-container { grid-template-columns: 1fr 1fr; gap: var(--s-9); }
|
||
}
|
||
|
||
/* -------------------- Sharing -------------------- */
|
||
.sharing {
|
||
background: var(--cream);
|
||
color: var(--text-on-light);
|
||
padding: var(--s-9) 0;
|
||
overflow: hidden;
|
||
}
|
||
.sharing .eyebrow { color: var(--amber); }
|
||
.sharing-container {
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: var(--s-7);
|
||
align-items: center;
|
||
}
|
||
.sharing-visual { display: flex; justify-content: center; }
|
||
|
||
.share-card {
|
||
width: 100%;
|
||
max-width: 380px;
|
||
background: var(--midnight);
|
||
color: var(--text-on-dark);
|
||
border-radius: var(--r-5);
|
||
padding: var(--s-6);
|
||
box-shadow: var(--shadow-deep);
|
||
border: 1px solid var(--border-on-dark-strong);
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
.share-card::before {
|
||
content: "";
|
||
position: absolute;
|
||
top: -40px;
|
||
right: -40px;
|
||
width: 180px;
|
||
height: 180px;
|
||
border-radius: 50%;
|
||
background: radial-gradient(circle, rgba(252, 206, 56, 0.22) 0%, transparent 70%);
|
||
}
|
||
.share-card-head {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
gap: var(--s-4);
|
||
margin-bottom: var(--s-5);
|
||
position: relative;
|
||
}
|
||
.share-card-head strong { display: block; font-size: 1.0625rem; font-weight: 700; color: var(--text-on-dark); }
|
||
.share-card-head small { display: block; font-size: var(--t-sm); color: var(--text-muted-on-dark); }
|
||
.share-card-tag {
|
||
flex-shrink: 0;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
min-height: 28px;
|
||
padding: 0 10px;
|
||
border-radius: var(--r-pill);
|
||
background: rgba(252, 206, 56, 0.14);
|
||
border: 1px solid rgba(252, 206, 56, 0.24);
|
||
font-size: var(--t-xs);
|
||
font-weight: 700;
|
||
letter-spacing: 0.06em;
|
||
text-transform: uppercase;
|
||
color: var(--gold);
|
||
}
|
||
|
||
.share-code {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 4px;
|
||
padding: var(--s-4);
|
||
margin-bottom: var(--s-4);
|
||
background: rgba(252, 206, 56, 0.1);
|
||
border: 1px dashed rgba(252, 206, 56, 0.4);
|
||
border-radius: var(--r-3);
|
||
position: relative;
|
||
}
|
||
.share-code-label {
|
||
font-size: 0.6875rem;
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
color: var(--gold);
|
||
}
|
||
.share-code-value {
|
||
font-size: 1.5rem;
|
||
font-weight: 700;
|
||
letter-spacing: 0.08em;
|
||
color: var(--text-on-dark);
|
||
font-feature-settings: "tnum";
|
||
}
|
||
|
||
.share-people {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--s-3);
|
||
}
|
||
.share-person {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: var(--s-3);
|
||
font-size: var(--t-sm);
|
||
color: var(--text-on-dark);
|
||
}
|
||
.share-avatar {
|
||
width: 32px;
|
||
height: 32px;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
border-radius: 50%;
|
||
font-size: 0.8125rem;
|
||
font-weight: 700;
|
||
color: var(--midnight);
|
||
flex-shrink: 0;
|
||
}
|
||
.share-avatar--a { background: var(--gold); }
|
||
.share-avatar--b { background: var(--pollen); }
|
||
.share-avatar--c { background: #E8A765; }
|
||
|
||
@media (min-width: 1024px) {
|
||
.sharing-container { grid-template-columns: 1fr 1fr; gap: var(--s-9); }
|
||
.sharing-visual { justify-content: flex-end; }
|
||
}
|
||
|
||
/* -------------------- Pricing -------------------- */
|
||
.pricing {
|
||
background: var(--midnight);
|
||
padding: var(--s-9) 0;
|
||
text-align: center;
|
||
position: relative;
|
||
}
|
||
.pricing .section-title { color: var(--text-on-dark); }
|
||
.pricing .section-sub { color: var(--text-muted-on-dark); margin-inline: auto; margin-bottom: var(--s-8); }
|
||
.pricing .eyebrow { color: var(--gold); }
|
||
|
||
.pricing-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: var(--s-5);
|
||
max-width: 920px;
|
||
margin-inline: auto;
|
||
text-align: left;
|
||
}
|
||
|
||
.price-card {
|
||
background: linear-gradient(180deg, rgba(245, 242, 234, 0.04), rgba(245, 242, 234, 0.01));
|
||
border: 1px solid var(--border-on-dark);
|
||
border-radius: var(--r-5);
|
||
padding: var(--s-7);
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--s-5);
|
||
position: relative;
|
||
}
|
||
.price-card--pro {
|
||
background: linear-gradient(180deg, rgba(252, 206, 56, 0.10), rgba(252, 206, 56, 0.02));
|
||
border-color: rgba(252, 206, 56, 0.4);
|
||
box-shadow: 0 32px 64px rgba(252, 206, 56, 0.10);
|
||
}
|
||
|
||
.price-card-tag {
|
||
position: absolute;
|
||
top: -12px;
|
||
right: var(--s-5);
|
||
background: var(--gold);
|
||
color: var(--midnight);
|
||
font-size: var(--t-xs);
|
||
font-weight: 700;
|
||
letter-spacing: 0.06em;
|
||
text-transform: uppercase;
|
||
padding: 4px 10px;
|
||
border-radius: var(--r-pill);
|
||
}
|
||
|
||
.price-card-header {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--s-2);
|
||
padding-bottom: var(--s-4);
|
||
border-bottom: 1px solid var(--border-on-dark);
|
||
}
|
||
.price-card-name {
|
||
font-size: 1rem;
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.06em;
|
||
color: var(--gold);
|
||
}
|
||
.price-card-price {
|
||
font-size: clamp(1.375rem, 2.4vw, 1.875rem);
|
||
font-weight: 700;
|
||
letter-spacing: -0.02em;
|
||
line-height: 1.1;
|
||
color: var(--text-on-dark);
|
||
}
|
||
.price-card-line {
|
||
font-size: var(--t-sm);
|
||
color: var(--text-muted-on-dark);
|
||
}
|
||
|
||
.price-card-list {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--s-3);
|
||
}
|
||
.price-card-list li {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
gap: var(--s-3);
|
||
font-size: var(--t-body);
|
||
color: var(--text-on-dark);
|
||
line-height: 1.5;
|
||
}
|
||
|
||
@media (min-width: 768px) {
|
||
.pricing-grid { grid-template-columns: 1fr 1fr; }
|
||
}
|
||
|
||
/* -------------------- Final CTA -------------------- */
|
||
.cta-final {
|
||
position: relative;
|
||
background: linear-gradient(180deg, var(--midnight) 0%, var(--deep) 100%);
|
||
padding: var(--s-10) 0;
|
||
overflow: hidden;
|
||
text-align: center;
|
||
}
|
||
.cta-glow {
|
||
position: absolute;
|
||
top: 50%;
|
||
left: 50%;
|
||
transform: translate(-50%, -50%);
|
||
width: 720px;
|
||
height: 720px;
|
||
border-radius: 50%;
|
||
background: radial-gradient(circle, rgba(252, 206, 56, 0.20) 0%, transparent 60%);
|
||
pointer-events: none;
|
||
}
|
||
|
||
.cta-container {
|
||
position: relative;
|
||
max-width: 640px;
|
||
margin-inline: auto;
|
||
}
|
||
.cta-container .eyebrow { color: var(--gold); }
|
||
.cta-title {
|
||
font-size: clamp(2rem, 4.4vw, 3.25rem);
|
||
font-weight: 800;
|
||
line-height: 1.1;
|
||
letter-spacing: -0.025em;
|
||
margin-bottom: var(--s-4);
|
||
color: var(--text-on-dark);
|
||
}
|
||
.cta-sub {
|
||
font-size: var(--t-lead);
|
||
color: var(--text-muted-on-dark);
|
||
margin-bottom: var(--s-6);
|
||
}
|
||
.cta-buttons {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: var(--s-3);
|
||
justify-content: center;
|
||
margin-bottom: var(--s-4);
|
||
}
|
||
.cta-trust {
|
||
font-size: var(--t-sm);
|
||
color: var(--text-faint-on-dark);
|
||
}
|
||
|
||
/* -------------------- Footer -------------------- */
|
||
.footer {
|
||
background: var(--deep);
|
||
color: var(--text-muted-on-dark);
|
||
padding: var(--s-8) 0 var(--s-5);
|
||
border-top: 1px solid var(--border-on-dark);
|
||
}
|
||
.footer-container {
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: var(--s-7);
|
||
margin-bottom: var(--s-7);
|
||
}
|
||
.footer-brand-row {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: var(--s-2);
|
||
margin-bottom: var(--s-3);
|
||
}
|
||
.footer-tagline {
|
||
font-size: var(--t-sm);
|
||
color: var(--text-muted-on-dark);
|
||
max-width: 28ch;
|
||
}
|
||
|
||
.footer-links {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: var(--s-5);
|
||
}
|
||
.footer-col h4 {
|
||
font-size: var(--t-xs);
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
color: var(--text-on-dark);
|
||
margin-bottom: var(--s-3);
|
||
}
|
||
.footer-col a {
|
||
display: block;
|
||
font-size: var(--t-sm);
|
||
color: var(--text-muted-on-dark);
|
||
padding: var(--s-1) 0;
|
||
transition: color 0.15s ease;
|
||
}
|
||
.footer-col a:hover { color: var(--gold); }
|
||
.footer-static {
|
||
display: block;
|
||
font-size: var(--t-sm);
|
||
color: var(--text-faint-on-dark);
|
||
padding: var(--s-1) 0;
|
||
}
|
||
|
||
.footer-bottom {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--s-2);
|
||
padding-top: var(--s-5);
|
||
border-top: 1px solid var(--border-on-dark);
|
||
font-size: var(--t-xs);
|
||
color: var(--text-faint-on-dark);
|
||
}
|
||
.brand-line {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: var(--s-2);
|
||
}
|
||
.brand-line-hex {
|
||
width: 8px;
|
||
height: 8px;
|
||
color: var(--gold);
|
||
}
|
||
|
||
@media (min-width: 768px) {
|
||
.footer-container {
|
||
grid-template-columns: 1.4fr 2fr;
|
||
gap: var(--s-8);
|
||
}
|
||
.footer-bottom {
|
||
flex-direction: row;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
}
|
||
|
||
/* -------------------- Reduced motion -------------------- */
|
||
@media (prefers-reduced-motion: reduce) {
|
||
html { scroll-behavior: auto; }
|
||
.reveal { opacity: 1; transform: none; transition: none; }
|
||
.iphone { animation: none; }
|
||
*, *::before, *::after {
|
||
animation-duration: 0.01ms !important;
|
||
transition-duration: 0.01ms !important;
|
||
}
|
||
}
|
||
|
||
/* -------------------- Focus visibility -------------------- */
|
||
a:focus-visible {
|
||
outline: 2px solid var(--gold);
|
||
outline-offset: 2px;
|
||
border-radius: 2px;
|
||
}
|