FCI theming refresh, contact identity fields, Amplify secrets fix

- Remap globals.css tokens to FCI brand palette (Eggplant #801d7f,
  Spring Pea #96bc33, Seed Grant #679038, Squash #c9ad2d, FCI gray
  #4b5657). Existing leaf-* / clay-* class names preserved.
- Switch body font to Open Sans (FCI's free fallback for Museo Sans).
  Headings keep Fraunces.
- Add contact identity (first name, last name, email) as readonly
  fields at the top of Stage 0. /api/data fetches via APIv4
  Contact.get with email_primary.email join; values flow through
  FormDataPayload.contact and into the form's evalState so the
  readonly renderer displays them. Draft restore re-applies them so
  a stale local draft can't override.
- amplify.yml: fetch Amplify Secrets from SSM Parameter Store when
  they don't arrive as build-shell env vars (the common failure mode
  behind "Refusing to run in production without CIVI_*"). Adds a
  length-only diagnostic echo and a hard-fail guard so a missing
  required var stops the build with a clear message instead of
  bundling empty strings and crashing the SSR Lambda at runtime.
This commit is contained in:
Joel Brock
2026-05-20 16:46:44 -07:00
parent 8caa851bcc
commit f0530ed337
7 changed files with 209 additions and 81 deletions
+56 -60
View File
@@ -1,62 +1,76 @@
@import "tailwindcss";
/* ─────────────────────────────────────────────────────────────────────────
* Theme — "Field Almanac"
* Theme — FCI Brand
*
* Inspiration: 1970s ecological-movement print, agricultural cooperative
* publications, hand-bound field journals. Warm cream paper, deep
* botanical green ink, sparing terracotta accent for emphasis.
* Aligned with the Food Co-op Initiative brand guidelines (12.2022).
* Primary palette: Eggplant (#801d7f), Spring Pea (#96bc33), Squash
* (#c9ad2d). Secondary neutrals: FCI Dark Gray (#4b5657), FCI Beige
* (#D2C9B0), Seed Grant Green (#679038). Type: Open Sans (FCI's free
* substitute for Museo Sans, per the guidelines).
*
* The palette is built in OKLCH for perceptual uniformity. Every neutral
* is tinted toward the leaf hue (h≈130) so cream and green feel like they
* came from the same press run.
* Semantic token names from the previous theme are preserved so existing
* component class names continue to apply:
* - leaf-* → Spring Pea / Seed Grant green family
* - clay-* → Eggplant purple family (brand primary accent)
* - squash-*→ FCI yellow accent (new)
* - paper/ink → clean neutrals tuned to brand gray
* ─────────────────────────────────────────────────────────────────────── */
@theme {
/* Typography */
/* Typography
* Headings: existing display serif (Fraunces) retained for editorial voice.
* Body: Open Sans — FCI brand's free fallback for Museo Sans. */
--font-display: var(--font-display), ui-serif, Georgia, "Times New Roman", serif;
--font-body: var(--font-body), ui-sans-serif, system-ui, -apple-system, sans-serif;
--font-body: var(--font-body), ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
/* Custom utility names */
--color-paper: oklch(97.5% 0.012 95); /* warm cream */
--color-paper-2: oklch(95.5% 0.018 90); /* deeper cream — section bands */
--color-ink: oklch(20% 0.02 130); /* near-black, slight green tint */
--color-ink-soft: oklch(35% 0.018 130);
--color-ink-mute: oklch(55% 0.014 120);
--color-rule: oklch(82% 0.025 100); /* hairline rules — like ink on cream */
--color-rule-soft: oklch(89% 0.02 100);
/* Neutrals — anchored on FCI Dark Gray #4b5657 with FCI Beige #D2C9B0
* peeking through in tinted surfaces. */
--color-paper: #ffffff; /* clean white */
--color-paper-2: #f7f4ec; /* tinted band — FCI beige, very light */
--color-ink: #2d3536; /* near-black, brand-aligned */
--color-ink-soft: #4b5657; /* FCI Dark Gray (exact) */
--color-ink-mute: #7a8384;
--color-rule: #d7d3c7; /* FCI beige, desaturated */
--color-rule-soft: #ebe7dc;
/* Botanical green — primary */
--color-leaf-50: oklch(97% 0.025 135);
--color-leaf-100: oklch(93% 0.05 135);
--color-leaf-200: oklch(87% 0.085 135);
--color-leaf-300: oklch(78% 0.115 135);
--color-leaf-400: oklch(68% 0.13 135);
--color-leaf-500: oklch(57% 0.135 135);
--color-leaf-600: oklch(47% 0.13 135);
--color-leaf-700: oklch(38% 0.115 135);
--color-leaf-800: oklch(30% 0.09 135);
--color-leaf-900: oklch(22% 0.06 135);
/* Leaf — Spring Pea #96bc33 + Seed Grant #679038 (FCI brand greens). */
--color-leaf-50: #f3f8e8;
--color-leaf-100: #e6f2cd;
--color-leaf-200: #d0e5a6;
--color-leaf-300: #b8d97c;
--color-leaf-400: #a4cf57;
--color-leaf-500: #96bc33; /* FCI Spring Pea (exact) */
--color-leaf-600: #7faa2a;
--color-leaf-700: #679038; /* FCI Seed Grant (exact) */
--color-leaf-800: #4f7029;
--color-leaf-900: #344f1a;
/* Terracotta — accent. Used sparingly: current-stage marker, key CTAs. */
--color-clay-100: oklch(94% 0.04 50);
--color-clay-200: oklch(86% 0.075 50);
--color-clay-400: oklch(70% 0.13 45);
--color-clay-500: oklch(63% 0.15 42);
--color-clay-600: oklch(54% 0.155 40);
--color-clay-700: oklch(45% 0.135 38);
/* Clay — repurposed as FCI Eggplant #801d7f (brand primary accent). */
--color-clay-100: #f5e6f4;
--color-clay-200: #e3c1e1;
--color-clay-400: #b34db1;
--color-clay-500: #9f2d9d;
--color-clay-600: #801d7f; /* FCI Eggplant (exact) */
--color-clay-700: #6a1869;
/* Stone — kept as a familiar alias mapping to our warm neutrals so any
* earlier `text-stone-*` / `border-stone-*` references stay readable. */
/* Squash — FCI yellow #c9ad2d. Reserved for warning glyphs and small
* highlights; not currently consumed by components but available. */
--color-squash-100: #faf3d0;
--color-squash-300: #e6d066;
--color-squash-500: #c9ad2d; /* FCI Squash (exact) */
--color-squash-700: #9a8623;
/* Stone alias — mapped to FCI neutrals for any lingering text-stone-* refs. */
--color-stone-50: var(--color-paper);
--color-stone-100: var(--color-paper-2);
--color-stone-200: var(--color-rule-soft);
--color-stone-300: var(--color-rule);
--color-stone-400: oklch(70% 0.018 110);
--color-stone-400: #a8aeae;
--color-stone-500: var(--color-ink-mute);
--color-stone-600: oklch(48% 0.015 120);
--color-stone-600: #5e6868;
--color-stone-700: var(--color-ink-soft);
--color-stone-800: oklch(28% 0.018 130);
--color-stone-800: #353c3d;
--color-stone-900: var(--color-ink);
}
@@ -73,28 +87,10 @@ html {
body {
background-color: var(--color-paper);
color: var(--color-ink);
/* Subtle paper grain — two diagonal repeating linear gradients combined
* with a soft radial overlay. No external image. Survives dark mode if
* we ever add one. */
background-image:
radial-gradient(ellipse 90% 60% at 50% 0%, oklch(99% 0.01 95 / 0.7), transparent 60%),
repeating-linear-gradient(
105deg,
oklch(96% 0.02 95 / 0.4) 0,
oklch(96% 0.02 95 / 0.4) 1px,
transparent 1px,
transparent 6px
),
repeating-linear-gradient(
15deg,
oklch(94% 0.02 95 / 0.25) 0,
oklch(94% 0.02 95 / 0.25) 1px,
transparent 1px,
transparent 9px
);
}
/* Typography defaults */
/* Typography defaults. Display serif keeps optical-size tuning (Fraunces);
* body switches to Open Sans (FCI brand fallback for Museo Sans). */
.font-display { font-family: var(--font-display); font-feature-settings: "ss01", "cv01"; }
.font-body { font-family: var(--font-body); }