From cb404ec0793e244c0810d2561d0a2d6dd5eb3a32 Mon Sep 17 00:00:00 2001 From: kirukib Date: Thu, 4 Jun 2026 14:45:22 +0300 Subject: [PATCH] Align site colors with GRV brand book palette. Centralize primary, secondary, tertiary, and neutral tokens and apply them across theme variables and UI components. Co-authored-by: Cursor --- app/contact/page.tsx | 2 +- app/exhibit/page.tsx | 2 +- app/globals.css | 164 ++++++++++-------- app/partners/page.tsx | 2 +- app/payment/success/page.tsx | 2 +- app/pitch-competition/page.tsx | 6 +- app/privacy/page.tsx | 14 +- app/program/page.tsx | 4 +- app/speakers/page.tsx | 4 +- components/brand/BrandLogo.tsx | 6 +- components/brand/FooterTopoPattern.tsx | 4 +- components/brand/FooterTopographicBand.tsx | 8 +- components/brand/PartnerLogoPlaceholder.tsx | 4 +- components/brand/RiftFlowLines.tsx | 2 +- components/brand/RiftPulseField.tsx | 8 +- components/brand/RiftTopographyLayer.tsx | 10 +- .../brand/RoundedRockVoronoiBackground.tsx | 12 +- components/brand/TopoCurvyExtend.tsx | 14 +- components/brand/WavyTessellationMesh.tsx | 11 +- components/event/AddToCalendar.tsx | 2 +- components/exhibit/BoothPackages.tsx | 8 +- components/exhibit/ExhibitorBoothForm.tsx | 10 +- components/forms/DataConsentField.tsx | 2 +- components/home/AttendSummitSection.tsx | 14 +- components/home/BoothAcquisitionBand.tsx | 6 +- components/home/ExperienceCards.tsx | 6 +- components/home/Faq.tsx | 4 +- components/home/Hero.tsx | 14 +- components/home/LastYearWinnerMark.tsx | 14 +- components/home/LastYearWinnerTip.tsx | 28 +-- components/home/LastYearWinnersScroll.tsx | 12 +- components/home/Newsletter.tsx | 2 +- components/home/PartnerMarquee.tsx | 4 +- components/home/PurposeBand.tsx | 6 +- components/home/Speakers.tsx | 10 +- components/home/SponsorTiers.tsx | 12 +- components/home/StatsGrid.tsx | 12 +- components/home/TicketsBand.tsx | 4 +- components/home/TopicMarquee.tsx | 6 +- components/home/Venue.tsx | 2 +- components/layout/FooterNewsletter.tsx | 8 +- components/layout/FooterSocialLinks.tsx | 2 +- components/layout/FooterSurface.tsx | 2 +- components/layout/MobileNavSheet.tsx | 6 +- components/layout/NavTicketsCta.tsx | 6 +- components/layout/PageRiftHeader.tsx | 6 +- components/layout/Section.tsx | 4 +- components/layout/SiteEntryPrompt.tsx | 20 +-- components/layout/SiteFooter.tsx | 12 +- components/layout/SiteHeader.tsx | 10 +- components/partners/ChampionStartupModal.tsx | 4 +- components/partners/PartnerCard.tsx | 4 +- components/partners/PartnerSectionBlock.tsx | 4 +- components/partners/PartnershipCtaBand.tsx | 2 +- .../partners/PartnershipInquiryForm.tsx | 6 +- components/payment/PaymentForm.tsx | 12 +- components/speakers/SpeakerCard.tsx | 10 +- components/tickets/TicketCard.tsx | 22 +-- .../tickets/TicketInclusionsPopover.tsx | 8 +- content/brand-colors.ts | 30 ++++ content/topo-patterns.ts | 2 +- 61 files changed, 341 insertions(+), 296 deletions(-) create mode 100644 content/brand-colors.ts diff --git a/app/contact/page.tsx b/app/contact/page.tsx index 6be1e4c..06f59b3 100644 --- a/app/contact/page.tsx +++ b/app/contact/page.tsx @@ -33,7 +33,7 @@ export default function ContactPage() { {ch.email} diff --git a/app/exhibit/page.tsx b/app/exhibit/page.tsx index 446f139..8207139 100644 --- a/app/exhibit/page.tsx +++ b/app/exhibit/page.tsx @@ -29,7 +29,7 @@ export default function ExhibitPage() {
    {benefits.map((b) => (
  • - + {b}
  • ))} diff --git a/app/globals.css b/app/globals.css index b224ddf..a841e24 100644 --- a/app/globals.css +++ b/app/globals.css @@ -30,39 +30,53 @@ --font-display: var(--font-display); --font-wordmark: "Google Sans Flex Variable", system-ui, sans-serif; --font-hero-serif: var(--font-hero-serif); - --color-brand-green: #1a5c38; - --color-brand-green-dark: #0d3d26; - --color-brand-gold: #ffb300; - --color-brand-blue: #1f3d7e; - --color-brand-navy: #0f0404; - --color-surface-muted: #f7f7f7; - --color-text-muted: #767676; + --color-brand-primary: #37a47a; + --color-brand-secondary: #b9d8c9; + --color-brand-tertiary: #30614c; + --color-brand-black: #000000; + --color-brand-grey-1: #5b5b5b; + --color-brand-grey-2: #a0a0a0; + --color-brand-grey-3: #dbdbdb; + --color-brand-white: #ffffff; + --color-brand-green: var(--color-brand-primary); + --color-brand-green-dark: var(--color-brand-tertiary); + --color-surface-muted: #e8f2ec; + --color-text-muted: #5b5b5b; } :root { --radius: 0.75rem; - --background: #ffffff; - --foreground: #0d3d26; - --card: #ffffff; - --card-foreground: #0d3d26; - --popover: #ffffff; - --popover-foreground: #0d3d26; - /* Primary: brand green · Secondary: white */ - --primary: #1a5c38; - --primary-foreground: #ffffff; - --secondary: #ffffff; - --secondary-foreground: #1a5c38; - --muted: #f0f5f2; - --muted-foreground: #5a6b62; - --accent: #ffb300; - --accent-foreground: #0d3d26; + --brand-primary: #37a47a; + --brand-secondary: #b9d8c9; + --brand-tertiary: #30614c; + --brand-black: #000000; + --brand-grey-1: #5b5b5b; + --brand-grey-2: #a0a0a0; + --brand-grey-3: #dbdbdb; + --brand-white: #ffffff; + --brand-white-soft: #fafafa; + --brand-surface-muted: #e8f2ec; + --background: var(--brand-white); + --foreground: var(--brand-tertiary); + --card: var(--brand-white); + --card-foreground: var(--brand-tertiary); + --popover: var(--brand-white); + --popover-foreground: var(--brand-tertiary); + --primary: var(--brand-primary); + --primary-foreground: var(--brand-white); + --secondary: var(--brand-secondary); + --secondary-foreground: var(--brand-tertiary); + --muted: var(--brand-surface-muted); + --muted-foreground: var(--brand-grey-1); + --accent: var(--brand-primary); + --accent-foreground: var(--brand-white); --destructive: #dc2626; - --border: #dce8e0; - --input: #dce8e0; - --ring: #1a5c38; - --hero: #0d3d26; - --section-muted: #f0f5f2; - --section-inverse: #1a5c38; + --border: var(--brand-grey-3); + --input: var(--brand-grey-3); + --ring: var(--brand-primary); + --hero: var(--brand-tertiary); + --section-muted: var(--brand-surface-muted); + --section-inverse: var(--brand-primary); } @layer base { @@ -96,12 +110,12 @@ text-wrap: balance; } .section-inverse { - background-color: #1a5c38; - color: #fafafa; + background-color: var(--brand-primary); + color: var(--brand-white-soft); } .section-green { - background-color: #1a5c38; - color: #fafafa; + background-color: var(--brand-primary); + color: var(--brand-white-soft); } @keyframes geometric-mess-drift { @@ -249,10 +263,10 @@ /* Admission ticket — side notches + rounded body */ .ticket-admission { border-radius: 1rem; - --ticket-notch-fill: var(--section-inverse, #1a5c38); + --ticket-notch-fill: var(--section-inverse, var(--brand-primary)); } .ticket-admission[data-ticket-notch="light"] { - --ticket-notch-fill: #f0f5f2; + --ticket-notch-fill: var(--brand-surface-muted); } .ticket-admission::before, .ticket-admission::after { @@ -278,11 +292,11 @@ :root { --rift-scroll: 0; --rift-canvas: #fbfdfb; - --rift-stroke: rgba(26, 92, 56, 0.18); - --rift-stroke-minor: rgba(26, 92, 56, 0.26); + --rift-stroke: rgba(55, 164, 122, 0.18); + --rift-stroke-minor: rgba(55, 164, 122, 0.26); --rift-stroke-inverse: rgba(255, 255, 255, 0.25); - --rift-accent: #ffb300; - --rift-channel: #1a5c38; + --rift-accent: var(--brand-secondary); + --rift-channel: var(--brand-primary); } .rift-profile-partners .rift-contour-minor, @@ -469,7 +483,7 @@ background: radial-gradient( ellipse 80% 60% at 50% 55%, rgba(45, 122, 82, 0.14) 0%, - rgba(26, 92, 56, 0.06) 45%, + rgba(55, 164, 122, 0.06) 45%, transparent 72% ); mix-blend-mode: soft-light; @@ -584,7 +598,7 @@ /* Readable brand-green copy on all white sections */ .section-white { - color: #0d3d26; + color: var(--brand-tertiary); } .section-white .topo-content-layer, @@ -599,26 +613,26 @@ .section-white .topo-content-readable :is(h1, h2, h3, h4, h5, h6, p, li, label, summary), .section-white .topo-content-layer a:not([data-slot="button"]), .section-white .topo-content-readable a:not([data-slot="button"]) { - color: #0d3d26; + color: var(--brand-tertiary); text-shadow: none; } .section-white .topo-content-layer .text-foreground, .section-white .topo-content-readable .text-foreground { - color: #1a5c38; + color: var(--brand-primary); } .section-white .topo-content-layer .text-muted-foreground, .section-white .topo-content-readable .text-muted-foreground { - color: #3d5248; + color: var(--brand-grey-1); } .section-white .topo-prose-surface-light :is(h1, h2, h3, h4, p, li, span) { - color: #0d3d26; + color: var(--brand-tertiary); } .section-white .topo-prose-surface-light .text-muted-foreground { - color: #3d5248; + color: var(--brand-grey-1); } .section-white .topo-card-surface, @@ -626,41 +640,41 @@ .section-white .bg-white.topo-card-surface :is(h1, h2, h3, h4, p, span), .section-white [data-slot="card"], .section-white [data-slot="card"] :is(h1, h2, h3, h4, p, span, li, label) { - color: #1a5c38; + color: var(--brand-primary); } .section-white .topo-card-surface .text-muted-foreground, .section-white [data-slot="card"] .text-muted-foreground, .section-white .bg-white .text-muted-foreground { - color: #3d5248; + color: var(--brand-grey-1); } .section-white [data-slot="accordion-trigger"] { - color: #0d3d26; + color: var(--brand-tertiary); } .section-white [data-slot="button"][data-variant="outline"], .section-white [data-slot="button"][data-variant="ghost"], .section-white [data-slot="button"][data-variant="link"] { - color: #1a5c38; + color: var(--brand-primary); } .section-white [data-slot="button"][data-variant="outline"] { - border-color: rgba(26, 92, 56, 0.35); + border-color: rgba(55, 164, 122, 0.35); } .section-white [data-slot="button"][data-variant="ghost"]:hover, .section-white [data-slot="button"][data-variant="link"]:hover { - color: #0d3d26; - background-color: rgba(26, 92, 56, 0.06); + color: var(--brand-tertiary); + background-color: rgba(55, 164, 122, 0.06); } header.section-white { - color: #0d3d26; + color: var(--brand-tertiary); } header.section-white .text-muted-foreground { - color: #3d5248; + color: var(--brand-grey-1); } .section-white:has(.topo-curvy-extend) { @@ -673,7 +687,7 @@ .topo-prose-surface-light { background: #ffffff; - border: 1px solid rgba(26, 92, 56, 0.12); + border: 1px solid rgba(55, 164, 122, 0.12); box-shadow: none; backdrop-filter: none; } @@ -730,7 +744,7 @@ .section-green .bg-white :is(h1, h2, h3, h4, p, span, li, label), .section-green [data-slot="card"], .section-green [data-slot="card"] :is(h1, h2, h3, h4, p, span, li, label, a) { - color: #1a5c38; + color: var(--brand-primary); text-shadow: none; } @@ -739,27 +753,27 @@ .section-green [data-slot="card"] .text-muted-foreground, .section-green [data-slot="card"] [data-slot="card-description"], .section-green .topo-card-surface [data-slot="card-description"] { - color: #3d5248; + color: var(--brand-grey-1); } .section-green .ticket-admission, .section-green .ticket-admission :is(h1, h2, h3, h4, p, span, li, label) { - color: #1a5c38; + color: var(--brand-primary); text-shadow: none; } .section-green .ticket-admission .text-muted-foreground, .section-green .ticket-admission p { - color: #3d5248; + color: var(--brand-grey-1); } .topo-card-link, .topo-card-link svg { - color: #1a5c38; + color: var(--brand-primary); } .topo-card-link:hover, .topo-card-link:hover svg { - color: #0d3d26; + color: var(--brand-tertiary); } .section-green .topo-on-green-bg [data-slot="button"][data-variant="outline"] { @@ -799,30 +813,30 @@ .section-green .topo-card-surface [data-slot="button"][data-variant="link"], .section-green .bg-white [data-slot="button"][data-variant="ghost"], .section-green .bg-white [data-slot="button"][data-variant="link"] { - color: #1a5c38; + color: var(--brand-primary); } .section-green [data-slot="card"] [data-slot="button"][data-variant="ghost"]:hover, .section-green [data-slot="card"] [data-slot="button"][data-variant="link"]:hover, .section-green .topo-card-surface [data-slot="button"][data-variant="ghost"]:hover, .section-green .topo-card-surface [data-slot="button"][data-variant="link"]:hover { - color: #0d3d26; - background-color: rgba(26, 92, 56, 0.06); + color: var(--brand-tertiary); + background-color: rgba(55, 164, 122, 0.06); } .section-green [data-slot="card"] [data-slot="button"][data-variant="outline"], .section-green .topo-card-surface [data-slot="button"][data-variant="outline"], .section-green .bg-white [data-slot="button"][data-variant="outline"] { - border-color: rgba(26, 92, 56, 0.4); - color: #1a5c38; + border-color: rgba(55, 164, 122, 0.4); + color: var(--brand-primary); background-color: transparent; } .section-green [data-slot="card"] [data-slot="button"][data-variant="outline"]:hover, .section-green .topo-card-surface [data-slot="button"][data-variant="outline"]:hover { - border-color: rgba(26, 92, 56, 0.55); - color: #0d3d26; - background-color: rgba(26, 92, 56, 0.06); + border-color: rgba(55, 164, 122, 0.55); + color: var(--brand-tertiary); + background-color: rgba(55, 164, 122, 0.06); } .section-green [data-slot="card"] [data-slot="button"] svg, @@ -830,14 +844,14 @@ color: currentColor; } - .section-green .topo-on-green-bg [data-slot="button"][data-variant="default"]:not([class*="bg-[#ffb300]"]) { - background-color: #ffb300; - color: #0f0404; + .section-green .topo-on-green-bg [data-slot="button"][data-variant="default"]:not([class*="bg-white"]) { + background-color: var(--brand-white); + color: var(--brand-tertiary); } - .section-green .topo-on-green-bg [data-slot="button"][data-variant="default"]:not([class*="bg-[#ffb300]"]):hover { - background-color: #e6a200; - color: #0f0404; + .section-green .topo-on-green-bg [data-slot="button"][data-variant="default"]:not([class*="bg-white"]):hover { + background-color: var(--brand-white-soft); + color: var(--brand-tertiary); } .topo-pattern-clearance-section { diff --git a/app/partners/page.tsx b/app/partners/page.tsx index e4492d7..8d9b658 100644 --- a/app/partners/page.tsx +++ b/app/partners/page.tsx @@ -28,7 +28,7 @@ export default function PartnersPage() { description={

    {partnersIntro.subheadline}

    } >
    - diff --git a/app/payment/success/page.tsx b/app/payment/success/page.tsx index d32b356..7c21c70 100644 --- a/app/payment/success/page.tsx +++ b/app/payment/success/page.tsx @@ -27,7 +27,7 @@ export default async function PaymentSuccessPage({ searchParams }: Props) { />
    - +

    Your registration has been received. Order reference:{" "} {orderId} diff --git a/app/pitch-competition/page.tsx b/app/pitch-competition/page.tsx index 4831629..5c81f92 100644 --- a/app/pitch-competition/page.tsx +++ b/app/pitch-competition/page.tsx @@ -30,12 +30,12 @@ export default function PitchCompetitionPage() { } description={ <> -

    {pitchCompetition.subheadline}

    +

    {pitchCompetition.subheadline}

    {pitchCompetition.description}

    } > - @@ -45,7 +45,7 @@ export default function PitchCompetitionPage() {
      {pitchCompetition.criteria.map((c) => (
    • - + {c}
    • ))} diff --git a/app/privacy/page.tsx b/app/privacy/page.tsx index 98a9c83..a1a03d8 100644 --- a/app/privacy/page.tsx +++ b/app/privacy/page.tsx @@ -19,31 +19,31 @@ export default function PrivacyPage() { eyebrow="Legal" title={

      {privacyPolicy.title}

      } description={ -

      Last updated: {privacyPolicy.updated}

      +

      Last updated: {privacyPolicy.updated}

      } />
      -

      {privacyPolicy.intro}

      +

      {privacyPolicy.intro}

      {privacyPolicy.sections.map((section) => (
      -

      {section.heading}

      -

      {section.body}

      +

      {section.heading}

      +

      {section.body}

      ))} -

      +

      {privacyPolicy.moreDetails}

      - -
      diff --git a/app/program/page.tsx b/app/program/page.tsx index bb40e96..a8a6443 100644 --- a/app/program/page.tsx +++ b/app/program/page.tsx @@ -41,7 +41,7 @@ export default function ProgramPage() { />
    -

    {day.date}

    +

    {day.date}

    {day.title} {day.description}
    @@ -73,7 +73,7 @@ export default function ProgramPage() { ))}
    - diff --git a/app/speakers/page.tsx b/app/speakers/page.tsx index c35d450..76bd749 100644 --- a/app/speakers/page.tsx +++ b/app/speakers/page.tsx @@ -37,7 +37,7 @@ export default function SpeakersPage() { } description={ -

    +

    {site.dates.label} · {site.venue.name}

    } @@ -64,7 +64,7 @@ export default function SpeakersPage() { )}
    -
    diff --git a/components/brand/BrandLogo.tsx b/components/brand/BrandLogo.tsx index 4e69848..13d835e 100644 --- a/components/brand/BrandLogo.tsx +++ b/components/brand/BrandLogo.tsx @@ -47,10 +47,10 @@ export function BrandLogo({ const primaryClass = isFooter ? "text-white" - : "text-[#1a5c38]"; + : "text-[#37a47a]"; const secondaryClass = isFooter ? "text-white/85" - : "text-[#0d3d26]/90"; + : "text-[#30614c]/90"; const primarySize = compact ? "text-[12px] sm:text-[13px] md:text-sm" @@ -97,7 +97,7 @@ export function BrandLogo({ return ( {content} diff --git a/components/brand/FooterTopoPattern.tsx b/components/brand/FooterTopoPattern.tsx index 17d3329..da34047 100644 --- a/components/brand/FooterTopoPattern.tsx +++ b/components/brand/FooterTopoPattern.tsx @@ -15,7 +15,7 @@ export function FooterTopoPattern({ className }: Props) { return (
    diff --git a/components/brand/FooterTopographicBand.tsx b/components/brand/FooterTopographicBand.tsx index b55db70..3412bbe 100644 --- a/components/brand/FooterTopographicBand.tsx +++ b/components/brand/FooterTopographicBand.tsx @@ -38,7 +38,7 @@ export function FooterTopographicBand({ className }: Props) { V76 C1120 92 860 58 600 74 S240 98 0 82 Z" - fill="#1a5c38" + fill="#37a47a" /> {/* Logo-like contour strokes */} @@ -102,7 +102,7 @@ export function FooterTopographicBand({ className }: Props) { {/* Fade into solid footer green */} -
    +
    ); } diff --git a/components/brand/PartnerLogoPlaceholder.tsx b/components/brand/PartnerLogoPlaceholder.tsx index 54cc947..53022cd 100644 --- a/components/brand/PartnerLogoPlaceholder.tsx +++ b/components/brand/PartnerLogoPlaceholder.tsx @@ -15,8 +15,8 @@ export function PartnerLogoPlaceholder({ className, size = "md" }: Props) { return (
    -
    +
    ); } diff --git a/components/brand/RiftPulseField.tsx b/components/brand/RiftPulseField.tsx index 18e461c..33d3d6e 100644 --- a/components/brand/RiftPulseField.tsx +++ b/components/brand/RiftPulseField.tsx @@ -4,9 +4,11 @@ import { useMemo } from "react"; import { mixHex } from "@/lib/rift-colors"; import { cn } from "@/lib/utils"; -const GREEN = "#1a5c38"; -const GOLD = "#ffb300"; -const BLUE = "#1f3d7e"; +import { BRAND_COLORS } from "@/content/brand-colors"; + +const GREEN: string = BRAND_COLORS.primary; +const GOLD: string = BRAND_COLORS.secondary; +const BLUE: string = BRAND_COLORS.tertiary; /** Long curved paths that pulse across the page background */ const PULSE_CURVES = [ diff --git a/components/brand/RiftTopographyLayer.tsx b/components/brand/RiftTopographyLayer.tsx index 41d0a0f..ea96290 100644 --- a/components/brand/RiftTopographyLayer.tsx +++ b/components/brand/RiftTopographyLayer.tsx @@ -14,9 +14,11 @@ import { import { mixHex } from "@/lib/rift-colors"; import { cn } from "@/lib/utils"; -const GREEN = "#1a5c38"; -const GOLD = "#ffb300"; -const BLUE = "#1f3d7e"; +import { BRAND_COLORS } from "@/content/brand-colors"; + +const GREEN: string = BRAND_COLORS.primary; +const GOLD: string = BRAND_COLORS.secondary; +const BLUE: string = BRAND_COLORS.tertiary; type Props = { variant: "hero" | "ambient" | "header"; @@ -100,7 +102,7 @@ export function RiftTopographyLayer({ {isHero && ( <>
    s + p[0], 0) / cell.points.length; const cy = cell.points.reduce((s, p) => s + p[1], 0) / cell.points.length; const yNorm = cy / MESH_H; - const gradient = mixHex("#2a6f4a", "#1a5c38", Math.min(1, yNorm * 0.45 + 0.25)); + const gradient = mixHex("#2a6f4a", "#37a47a", Math.min(1, yNorm * 0.45 + 0.25)); const tone = ROCK_TONES[(index * 11 + Math.floor(cx * 0.55)) % ROCK_TONES.length]; return mixHex(gradient, tone, 0.38); } @@ -55,7 +57,7 @@ export function RoundedRockVoronoiBackground({ return (
    {gradient && (
    )} diff --git a/components/brand/TopoCurvyExtend.tsx b/components/brand/TopoCurvyExtend.tsx index c2f8c3a..ac30d93 100644 --- a/components/brand/TopoCurvyExtend.tsx +++ b/components/brand/TopoCurvyExtend.tsx @@ -26,7 +26,7 @@ export function TopoCurvyExtend({ className }: Props) { {boothPackages.map((pkg) => ( - + {pkg.name} - {pkg.size} + {pkg.size} -

    {pkg.description}

    +

    {pkg.description}

      {pkg.highlights.map((h) => (
    • - + {h}
    • ))} diff --git a/components/exhibit/ExhibitorBoothForm.tsx b/components/exhibit/ExhibitorBoothForm.tsx index b082342..eecb736 100644 --- a/components/exhibit/ExhibitorBoothForm.tsx +++ b/components/exhibit/ExhibitorBoothForm.tsx @@ -98,7 +98,7 @@ export function ExhibitorBoothForm() {
    - + Contact
    @@ -134,7 +134,7 @@ export function ExhibitorBoothForm() {
    - + Company & products
    @@ -188,7 +188,7 @@ export function ExhibitorBoothForm() {
    - + Booth requirements
    @@ -247,14 +247,14 @@ export function ExhibitorBoothForm() { {error &&

    {error}

    } {status === "success" && ( -

    +

    Thank you! We received your booth request and will follow up with availability and pricing.

    )}
    -

    +

    {exhibitCopy.eyebrow}

    {exhibitCopy.headline}

    -

    {exhibitCopy.subheadline}

    +

    {exhibitCopy.subheadline}

    -
    -

    +

    diff --git a/components/home/LastYearWinnerMark.tsx b/components/home/LastYearWinnerMark.tsx index 1bf8bfa..2358b56 100644 --- a/components/home/LastYearWinnerMark.tsx +++ b/components/home/LastYearWinnerMark.tsx @@ -79,7 +79,7 @@ export function LastYearWinnerMark({ type="button" data-winner-interactive className={cn( - "shrink-0 rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-[#1a5c38]/40", + "shrink-0 rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-[#37a47a]/40", isOpen && "relative z-30" )} aria-label={ @@ -98,14 +98,14 @@ export function LastYearWinnerMark({ className={cn( "flex h-10 shrink-0 items-center gap-2 rounded-lg border px-2.5 shadow-sm transition-colors", onLight - ? "border-[#1a5c38]/15 bg-white/95 hover:border-[#1a5c38]/30 hover:bg-white" + ? "border-[#37a47a]/15 bg-white/95 hover:border-[#37a47a]/30 hover:bg-white" : "border-white/25 bg-white/90 hover:border-white/50 hover:bg-white", logoOnly && "px-2", isOpen && (onLight - ? "border-[#1a5c38]/40 ring-2 ring-[#1a5c38]/15" + ? "border-[#37a47a]/40 ring-2 ring-[#37a47a]/15" : "border-white/60 ring-2 ring-white/25"), - isPinned && "border-[#ffb300]/70 ring-2 ring-[#ffb300]/25", + isPinned && "border-[#37a47a]/70 ring-2 ring-[#37a47a]/25", className )} > @@ -120,7 +120,7 @@ export function LastYearWinnerMark({ onError={() => setFailed(true)} /> ) : company.initials ? ( - + {company.initials} ) : ( @@ -134,7 +134,7 @@ export function LastYearWinnerMark({ )}
    {company.name ? ( - + {company.name} ) : null} @@ -148,7 +148,7 @@ export function LastYearWinnerMark({ sideOffset={8} collisionPadding={12} data-winner-interactive - className="z-50 w-72 max-w-[calc(100vw-2rem)] shrink-0 overflow-hidden border-[#1a5c38]/15 bg-white p-0 shadow-lg" + className="z-50 w-72 max-w-[calc(100vw-2rem)] shrink-0 overflow-hidden border-[#37a47a]/15 bg-white p-0 shadow-lg" onMouseEnter={handleEnter} onMouseLeave={handleLeave} onOpenAutoFocus={(e) => e.preventDefault()} diff --git a/components/home/LastYearWinnerTip.tsx b/components/home/LastYearWinnerTip.tsx index 3e19938..8390a90 100644 --- a/components/home/LastYearWinnerTip.tsx +++ b/components/home/LastYearWinnerTip.tsx @@ -30,7 +30,7 @@ function FounderPhoto({ company }: { company: LastYearWinner }) { alt="" width={48} height={48} - className="size-12 shrink-0 rounded-full border-2 border-[#1a5c38]/15 object-cover" + className="size-12 shrink-0 rounded-full border-2 border-[#37a47a]/15 object-cover" onError={() => setFailed(true)} /> ); @@ -49,7 +49,7 @@ function FounderPhoto({ company }: { company: LastYearWinner }) { return (
    {initials} @@ -72,24 +72,24 @@ export function LastYearWinnerTip({ company, className, showClose, onClose }: Pr
    -

    +

    {name}

    {company.founderName ? ( -

    {company.founderName}

    +

    {company.founderName}

    ) : null} -

    +

    {impact.summary}

    {headline ? ( -
    -

    +

    +

    {headline.label}

    -

    +

    {headline.value}

    @@ -99,10 +99,10 @@ export function LastYearWinnerTip({ company, className, showClose, onClose }: Pr
    {supporting.map((m) => (
    -
    +
    {m.label}
    -
    {m.value}
    +
    {m.value}
    ))}
    @@ -111,7 +111,7 @@ export function LastYearWinnerTip({ company, className, showClose, onClose }: Pr {showFooter ? (
    @@ -120,7 +120,7 @@ export function LastYearWinnerTip({ company, className, showClose, onClose }: Pr type="button" data-winner-interactive onClick={onClose} - className="inline-flex size-7 shrink-0 items-center justify-center rounded-full border border-[#1a5c38]/15 bg-white text-[#1a5c38] shadow-sm transition-colors hover:bg-[#f0f5f2]" + className="inline-flex size-7 shrink-0 items-center justify-center rounded-full border border-[#37a47a]/15 bg-white text-[#37a47a] shadow-sm transition-colors hover:bg-[#e8f2ec]" aria-label="Close impact details" > @@ -131,7 +131,7 @@ export function LastYearWinnerTip({ company, className, showClose, onClose }: Pr
    diff --git a/components/home/StatsGrid.tsx b/components/home/StatsGrid.tsx index ff439d3..c9ebe39 100644 --- a/components/home/StatsGrid.tsx +++ b/components/home/StatsGrid.tsx @@ -6,7 +6,7 @@ export function StatsGrid() { return (
    -

    +

    The future starts here

    @@ -17,18 +17,18 @@ export function StatsGrid() { {site.stats.map((stat) => (
    {stat.type === "cycling" ? ( ) : ( -

    {stat.value}

    +

    {stat.value}

    )} -

    {stat.label}

    +

    {stat.label}

    ))}

    diff --git a/components/home/TicketsBand.tsx b/components/home/TicketsBand.tsx index e0dc91c..afda819 100644 --- a/components/home/TicketsBand.tsx +++ b/components/home/TicketsBand.tsx @@ -7,7 +7,7 @@ export function TicketsBand() { return (
    -

    +

    Tickets

    @@ -31,7 +31,7 @@ export function TicketsBand() {

    Accepted: Visa, Mastercard, AMEX ·{" "} - + Bank transfer & invoice

    diff --git a/components/home/TopicMarquee.tsx b/components/home/TopicMarquee.tsx index de533db..76078cc 100644 --- a/components/home/TopicMarquee.tsx +++ b/components/home/TopicMarquee.tsx @@ -8,10 +8,10 @@ export function TopicMarquee() { return (
    -

    +

    Program themes

    -

    +

    Topics shaping the summit

    @@ -21,7 +21,7 @@ export function TopicMarquee() { {topic} diff --git a/components/home/Venue.tsx b/components/home/Venue.tsx index 3ca3991..a778faa 100644 --- a/components/home/Venue.tsx +++ b/components/home/Venue.tsx @@ -9,7 +9,7 @@ export function Venue() {
    -

    The venue

    +

    The venue

    {site.venue.name}

    {site.venue.address}

    @@ -116,7 +116,7 @@ export function SiteEntryPrompt() { type="button" variant="outline" onClick={handleDecline} - className="rounded-full border-[#1a5c38]/30 text-[#1a5c38] hover:bg-[#1a5c38]/6" + className="rounded-full border-[#37a47a]/30 text-[#37a47a] hover:bg-[#37a47a]/6" > {copy.declineCta} diff --git a/components/layout/SiteFooter.tsx b/components/layout/SiteFooter.tsx index ac27583..9876de5 100644 --- a/components/layout/SiteFooter.tsx +++ b/components/layout/SiteFooter.tsx @@ -46,7 +46,7 @@ const footerColumns = [ export function SiteFooter() { return ( -