page.tsx 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import Link from "next/link";
  2. import { BrandLogo } from "@/components/brand/brand-logo";
  3. import { ArrowRightIcon } from "@/components/icons/arrow-right";
  4. import { DualPathCta } from "@/components/marketing/dual-path-cta";
  5. import { HybridJourney } from "@/components/marketing/hybrid-journey";
  6. import { buttonVariants } from "@/components/ui/button";
  7. import { cn } from "@/lib/utils";
  8. export default function HomePage() {
  9. return (
  10. <>
  11. {/* Hero — editorial, spacious, brand-led */}
  12. <section className="relative overflow-hidden">
  13. <div
  14. aria-hidden
  15. className="pointer-events-none absolute inset-0 bg-[radial-gradient(ellipse_80%_60%_at_15%_0%,rgb(149_32_130_/_0.18),transparent_55%),radial-gradient(ellipse_50%_40%_at_90%_80%,rgb(0_79_141_/_0.14),transparent_50%),radial-gradient(ellipse_40%_30%_at_60%_100%,rgb(0_157_99_/_0.1),transparent_45%)]"
  16. />
  17. <div className="relative mx-auto grid max-w-6xl gap-12 px-5 py-20 lg:grid-cols-[1.15fr_0.85fr] lg:items-end lg:gap-16 lg:px-8 lg:py-28">
  18. <div>
  19. <p className="mb-5 text-xs font-medium uppercase tracking-[0.2em] text-muted-foreground">
  20. hybrid blockchain
  21. </p>
  22. <h1 className="font-display text-4xl font-semibold tracking-tight text-balance sm:text-5xl lg:text-6xl lg:leading-[1.05]">
  23. Private speed.
  24. <br />
  25. <span className="text-accent-hover">Public proof.</span>
  26. </h1>
  27. <p className="prose-measure mt-6 text-base leading-relaxed text-muted-foreground sm:text-lg">
  28. krypco runs transactions on a fast permissioned layer and anchors
  29. cryptographic commitments to a public chain — confidential where
  30. it matters, verifiable where it counts.
  31. </p>
  32. <div className="mt-8 flex flex-wrap items-center gap-3">
  33. <Link
  34. href="/portal"
  35. className={cn(buttonVariants({ size: "lg" }), "gap-2")}
  36. >
  37. Open portal
  38. <ArrowRightIcon size={15} />
  39. </Link>
  40. <Link
  41. href="/how-it-works"
  42. className={cn(
  43. buttonVariants({ variant: "outline", size: "lg" }),
  44. )}
  45. >
  46. How it works
  47. </Link>
  48. </div>
  49. </div>
  50. <div className="relative flex justify-center lg:justify-end">
  51. <div className="relative rounded-3xl border border-border/50 bg-card/60 p-10 shadow-[0_24px_64px_-16px_rgb(0_0_0_/_0.75),0_0_0_1px_rgb(255_255_255_/_0.04)] backdrop-blur-sm">
  52. <BrandLogo height={140} priority />
  53. <p className="mt-6 max-w-[14rem] text-center text-xs leading-relaxed text-muted-foreground lg:text-left">
  54. Official mark — private geometry, public color. Same brand on
  55. the site and in the portal.
  56. </p>
  57. </div>
  58. </div>
  59. </div>
  60. </section>
  61. {/* Dual doors — equal weight */}
  62. <section className="section-pad">
  63. <div className="mx-auto max-w-6xl px-5 lg:px-8">
  64. <div className="mb-10 max-w-xl">
  65. <p className="text-xs font-medium uppercase tracking-[0.18em] text-muted-foreground">
  66. Two doors. Same network.
  67. </p>
  68. <h2 className="font-display mt-3 text-3xl font-semibold tracking-tight sm:text-4xl">
  69. Who are you here for?
  70. </h2>
  71. <p className="mt-3 text-sm leading-relaxed text-muted-foreground sm:text-base">
  72. Business and builders take different paths. Both land on the same
  73. hybrid truth.
  74. </p>
  75. </div>
  76. <DualPathCta />
  77. </div>
  78. </section>
  79. {/* Hybrid journey */}
  80. <section className="section-pad">
  81. <div className="mx-auto max-w-6xl px-5 lg:px-8">
  82. <div className="mb-12 grid gap-6 lg:grid-cols-[1fr_1.2fr] lg:items-end">
  83. <div>
  84. <p className="text-xs font-medium uppercase tracking-[0.18em] text-proof">
  85. The hybrid path
  86. </p>
  87. <h2 className="font-display mt-3 text-3xl font-semibold tracking-tight sm:text-4xl">
  88. One transaction. Two layers.
  89. </h2>
  90. </div>
  91. <p className="text-sm leading-relaxed text-muted-foreground sm:text-base">
  92. Follow the full arc in the portal: private block → commitment →
  93. public anchor. No black boxes.
  94. </p>
  95. </div>
  96. <HybridJourney />
  97. <div className="mt-12">
  98. <Link
  99. href="/portal/explorer"
  100. className={cn(
  101. buttonVariants({ variant: "outline" }),
  102. "gap-2",
  103. )}
  104. >
  105. Follow a transaction in the explorer
  106. <ArrowRightIcon size={15} />
  107. </Link>
  108. </div>
  109. </div>
  110. </section>
  111. {/* Quiet credibility strip — same soft elevation as K mark card */}
  112. <section className="section-pad">
  113. <div className="mx-auto max-w-6xl px-5 lg:px-8">
  114. <div className="grid overflow-hidden rounded-3xl border border-border/50 bg-card/60 shadow-[0_24px_64px_-16px_rgb(0_0_0_/_0.75),0_0_0_1px_rgb(255_255_255_/_0.04)] backdrop-blur-sm sm:grid-cols-3">
  115. {[
  116. {
  117. label: "Private layer",
  118. value: "Permissioned",
  119. hint: "Access control + confidential data",
  120. },
  121. {
  122. label: "Public layer",
  123. value: "Anchored",
  124. hint: "State roots anyone can verify",
  125. },
  126. {
  127. label: "Portal",
  128. value: "Follow-along",
  129. hint: "Explorer for the full hybrid path",
  130. },
  131. ].map((item, i) => (
  132. <div
  133. key={item.label}
  134. className={cn(
  135. "px-6 py-8 sm:px-8",
  136. i > 0 && "border-t border-border/40 sm:border-t-0 sm:border-l",
  137. )}
  138. >
  139. <p className="text-xs uppercase tracking-[0.14em] text-muted-foreground">
  140. {item.label}
  141. </p>
  142. <p className="font-display mt-2 text-2xl font-semibold tracking-tight">
  143. {item.value}
  144. </p>
  145. <p className="mt-2 text-sm text-muted-foreground">{item.hint}</p>
  146. </div>
  147. ))}
  148. </div>
  149. </div>
  150. </section>
  151. </>
  152. );
  153. }