diff --git a/package-lock.json b/package-lock.json
index 39338a7..b298ef4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,8 @@
"name": "kobilwebsite",
"version": "0.1.0",
"dependencies": {
+ "framer-motion": "^12.34.0",
+ "lucide-react": "^0.564.0",
"next": "16.1.6",
"react": "19.2.3",
"react-dom": "19.2.3"
@@ -3585,6 +3587,33 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/framer-motion": {
+ "version": "12.34.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.34.0.tgz",
+ "integrity": "sha512-+/H49owhzkzQyxtn7nZeF4kdH++I2FWrESQ184Zbcw5cEqNHYkE5yxWxcTLSj5lNx3NWdbIRy5FHqUvetD8FWg==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-dom": "^12.34.0",
+ "motion-utils": "^12.29.2",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -4833,6 +4862,15 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.564.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.564.0.tgz",
+ "integrity": "sha512-JJ8GVTQqFwuliifD48U6+h7DXEHdkhJ/E87kksGByII3qHxtPciVb8T8woQONHBQgHVOl7rSMrrip3SeVNy7Fg==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
@@ -4900,6 +4938,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/motion-dom": {
+ "version": "12.34.0",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.34.0.tgz",
+ "integrity": "sha512-Lql3NuEcScRDxTAO6GgUsRHBZOWI/3fnMlkMcH5NftzcN37zJta+bpbMAV9px4Nj057TuvRooMK7QrzMCgtz6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-utils": "^12.29.2"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.29.2",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz",
+ "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==",
+ "license": "MIT"
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
diff --git a/package.json b/package.json
index ed2dfa8..e1b9fc9 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,8 @@
"lint": "eslint"
},
"dependencies": {
+ "framer-motion": "^12.34.0",
+ "lucide-react": "^0.564.0",
"next": "16.1.6",
"react": "19.2.3",
"react-dom": "19.2.3"
diff --git a/public/images/hero-ai-agents.jpg b/public/images/hero-ai-agents.jpg
new file mode 100644
index 0000000..75f27c5
Binary files /dev/null and b/public/images/hero-ai-agents.jpg differ
diff --git a/public/images/hero-home.jpg b/public/images/hero-home.jpg
new file mode 100644
index 0000000..59a6dee
Binary files /dev/null and b/public/images/hero-home.jpg differ
diff --git a/public/images/hero-industries.jpg b/public/images/hero-industries.jpg
new file mode 100644
index 0000000..0865b55
Binary files /dev/null and b/public/images/hero-industries.jpg differ
diff --git a/public/images/hero-platform.jpg b/public/images/hero-platform.jpg
new file mode 100644
index 0000000..dd4b5d2
Binary files /dev/null and b/public/images/hero-platform.jpg differ
diff --git a/public/images/hero-security.jpg b/public/images/hero-security.jpg
new file mode 100644
index 0000000..3dc527e
Binary files /dev/null and b/public/images/hero-security.jpg differ
diff --git a/public/images/section-communication.jpg b/public/images/section-communication.jpg
new file mode 100644
index 0000000..879c67a
Binary files /dev/null and b/public/images/section-communication.jpg differ
diff --git a/public/images/section-identity.jpg b/public/images/section-identity.jpg
new file mode 100644
index 0000000..7c2433d
Binary files /dev/null and b/public/images/section-identity.jpg differ
diff --git a/public/images/section-payments.jpg b/public/images/section-payments.jpg
new file mode 100644
index 0000000..bc3cd59
Binary files /dev/null and b/public/images/section-payments.jpg differ
diff --git a/public/images/section-signatures.jpg b/public/images/section-signatures.jpg
new file mode 100644
index 0000000..9be5d3a
Binary files /dev/null and b/public/images/section-signatures.jpg differ
diff --git a/public/kobil.png b/public/kobil.png
new file mode 100644
index 0000000..cba5cdd
Binary files /dev/null and b/public/kobil.png differ
diff --git a/public/kobil.svg b/public/kobil.svg
new file mode 100644
index 0000000..2fcc9f0
--- /dev/null
+++ b/public/kobil.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/ai-agents/page.tsx b/src/app/ai-agents/page.tsx
new file mode 100644
index 0000000..83572aa
--- /dev/null
+++ b/src/app/ai-agents/page.tsx
@@ -0,0 +1,387 @@
+"use client";
+
+import Image from "next/image";
+import { motion } from "framer-motion";
+import {
+ Bot,
+ ArrowRight,
+ Fingerprint,
+ Link2,
+ ShieldCheck,
+ FileKey,
+ Eye,
+ Scale,
+ Network,
+ BrainCircuit,
+ CreditCard,
+ FileText,
+ Database,
+} from "lucide-react";
+import { GlassCard } from "@/components/GlassCard";
+import { GlowingButton } from "@/components/GlowingButton";
+import { SectionWrapper, itemVariants } from "@/components/SectionWrapper";
+import { ParticleBackground } from "@/components/ParticleBackground";
+
+/* ── Stagger helpers ── */
+const heroStagger = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: { staggerChildren: 0.12, delayChildren: 0.2 },
+ },
+};
+const heroChild = {
+ hidden: { opacity: 0, y: 50, filter: "blur(4px)" },
+ visible: {
+ opacity: 1,
+ y: 0,
+ filter: "blur(0px)",
+ transition: { duration: 0.8, ease: [0.16, 1, 0.3, 1] as const },
+ },
+};
+
+const problems = [
+ {
+ title: "No Verifiable Identity",
+ description:
+ "AI agents operate without credentials. You can't verify who sent an agent, what it's authorized to do, or if it's been compromised.",
+ },
+ {
+ title: "No Accountability Chain",
+ description:
+ "When an agent acts on behalf of a human or organization, there's no cryptographic proof linking the action back to its principal.",
+ },
+ {
+ title: "No Trust Framework",
+ description:
+ "Existing security infrastructure was built for humans clicking buttons — not for autonomous agents making API calls at machine speed.",
+ },
+];
+
+const features = [
+ {
+ icon: Fingerprint,
+ title: "Agent Identity",
+ description:
+ "Cryptographically verifiable identities for AI agents. Every agent gets a unique, tamper-proof digital identity tied to its principal.",
+ },
+ {
+ icon: Link2,
+ title: "Principal Chain",
+ description:
+ "Unbreakable chain of accountability from agent to human to organization. Every action traceable back to a verified principal.",
+ },
+ {
+ icon: ShieldCheck,
+ title: "Scoped Authorization",
+ description:
+ "Fine-grained permission boundaries. Define exactly what each agent can do, for how long, and on whose behalf.",
+ },
+ {
+ icon: FileKey,
+ title: "Agent Signatures",
+ description:
+ "AI agents can sign documents and approve transactions with legally attributable digital signatures.",
+ },
+ {
+ icon: Eye,
+ title: "Real-Time Monitoring",
+ description:
+ "Continuous behavioral analysis of agent actions. Detect anomalies, enforce policies, and revoke access instantly.",
+ },
+ {
+ icon: Scale,
+ title: "Compliance Framework",
+ description:
+ "Built-in compliance for regulated industries. Audit trails, data residency controls, and regulatory reporting.",
+ },
+ {
+ icon: Network,
+ title: "Agent-to-Agent Trust",
+ description:
+ "Secure, authenticated communication between AI agents. Mutual verification before any data exchange or collaboration.",
+ },
+];
+
+const useCases = [
+ {
+ icon: CreditCard,
+ title: "Autonomous Payments",
+ description:
+ "AI agents authorized to make purchases, process refunds, and manage subscriptions — with verified identity and spending limits.",
+ scenario: "E-commerce & FinTech",
+ },
+ {
+ icon: FileText,
+ title: "Document Processing",
+ description:
+ "Agents that review, sign, and route legal documents with full audit trails and legally binding signatures.",
+ scenario: "Legal & Enterprise",
+ },
+ {
+ icon: Database,
+ title: "Data Access & Analysis",
+ description:
+ "Trusted agents that access sensitive databases, run analyses, and share results — all within verified permission boundaries.",
+ scenario: "Healthcare & Government",
+ },
+ {
+ icon: BrainCircuit,
+ title: "Multi-Agent Orchestration",
+ description:
+ "Coordinate fleets of specialized agents with verified identities, scoped permissions, and real-time monitoring.",
+ scenario: "AI-First Companies",
+ },
+];
+
+export default function AIAgentsPage() {
+ return (
+ <>
+ {/* Hero */}
+
+
+
+ {/* ── UNBOXED hero image — absolutely positioned background ── */}
+
+
+
+
+
+ {/* Cinematic spotlights */}
+
+
+ {/* Glow orb behind headline */}
+
+
+ {/* Bottom fade */}
+
+
+
+
+
+
+
+ The Future of Trust
+
+
+
+
+
+ AI Agent Infrastructure
+
+
+
+
+ Trust Infrastructure
+
+
+ for AI Agents
+
+
+
+
+ AI agents are the next users of the internet. They need
+ identities, permissions, and accountability — just like humans.
+ KOBIL provides the trust layer.
+
+
+
+
+ Book a Demo
+
+
+ See the Platform
+
+
+
+
+
+
+ {/* Problem */}
+
+
+
+ The Problem
+
+
+ AI Agents Are Here.{" "}
+ Trust Isn't.
+
+
+ The AI agent economy is emerging fast — but the trust infrastructure
+ hasn't kept up. Here's the gap.
+
+
+
+
+ {problems.map((problem) => (
+
+
+
+
+
+ {problem.title}
+
+ {problem.description}
+
+
+
+ ))}
+
+
+
+ {/* Solution Features */}
+
+
+
+ The Solution
+
+
+ The KOBIL{" "}
+
+ Agent Trust Layer
+
+
+
+ Seven capabilities that make AI agents trustworthy, accountable, and
+ enterprise-ready.
+
+
+
+
+ {features.map((feature) => (
+
+
+
+ {feature.title}
+
+ {feature.description}
+
+
+
+ ))}
+
+
+
+ {/* Use Cases */}
+
+
+
+ Applications
+
+
+ Real-World{" "}
+ Use Cases
+
+
+ How trusted AI agents transform industries.
+
+
+
+
+ {useCases.map((uc) => (
+
+
+
+
+
+ {uc.scenario}
+
+
+ {uc.title}
+ {uc.description}
+
+
+ ))}
+
+
+
+ {/* Vision */}
+
+
+
+
+ Our Vision
+
+
+ The future isn't human{" "}
+ or AI.
+
+
+ It's both — working together, with trust.
+
+
+
+ KOBIL is building the trust infrastructure that allows humans and
+ AI agents to collaborate securely, with verifiable identities,
+ scoped permissions, and complete accountability. The AI agent
+ economy starts with trust.
+
+
+
+
+
+ {/* CTA */}
+
+ {/* Ambient glow */}
+
+
+
+
+ Ready for the{" "}
+ Agent Economy ?
+
+
+ Be among the first to deploy trusted AI agent infrastructure.
+ Talk to our team about your use case.
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx
new file mode 100644
index 0000000..d1ddd30
--- /dev/null
+++ b/src/app/contact/page.tsx
@@ -0,0 +1,263 @@
+"use client";
+
+import { useState } from "react";
+import { motion } from "framer-motion";
+import {
+ Mail,
+ Linkedin,
+ MapPin,
+ Globe,
+ Send,
+ ArrowRight,
+} from "lucide-react";
+import { GlassCard } from "@/components/GlassCard";
+import { SectionWrapper, itemVariants } from "@/components/SectionWrapper";
+import { ParticleBackground } from "@/components/ParticleBackground";
+
+export default function ContactPage() {
+ const [formData, setFormData] = useState({
+ name: "",
+ email: "",
+ company: "",
+ role: "",
+ message: "",
+ });
+ const [submitted, setSubmitted] = useState(false);
+
+ const handleSubmit = (e: React.FormEvent) => {
+ e.preventDefault();
+ setSubmitted(true);
+ };
+
+ return (
+ <>
+ {/* Hero */}
+
+
+
+ {/* Cinematic spotlights */}
+
+
+ {/* Bottom fade */}
+
+
+
+
+
+ Get in Touch
+
+
+ Let's Build
+
+
+ Digital Trust Together
+
+
+
+ Ready to see how KOBIL can transform your organization's
+ digital trust infrastructure? Get in touch.
+
+
+
+
+
+ {/* Contact Form + Info */}
+
+
+ {/* Form */}
+
+
+ {submitted ? (
+
+
+
+
+
+ Message Sent!
+
+
+ Thank you for reaching out. Our team will get back to you
+ within 24 hours.
+
+
+ ) : (
+ <>
+
+ Book a Demo
+
+
+ Fill out the form and our team will reach out to schedule a
+ personalized demo.
+
+
+ >
+ )}
+
+
+
+ {/* Contact Info */}
+
+
+ Get in Touch
+
+
+
+
+ Headquarters
+
+
+
+
+
KOBIL GmbH
+
Worms, Germany
+
+
+
+
+ Serving 50+ countries worldwide
+
+
+
+
+
+ Quick Facts
+
+
+
+ Founded in Germany, trusted globally
+
+
+
+ 25+ years of cybersecurity innovation
+
+
+
+ 100M+ identities secured worldwide
+
+
+
+ ISO 27001, eIDAS, PSD2 compliant
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/globals.css b/src/app/globals.css
index a2dc41e..2072f01 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -1,26 +1,137 @@
@import "tailwindcss";
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
-
@theme inline {
- --color-background: var(--background);
- --color-foreground: var(--foreground);
- --font-sans: var(--font-geist-sans);
- --font-mono: var(--font-geist-mono);
+ --color-navy: #0A0F2E;
+ --color-navy-light: #111640;
+ --color-navy-mid: #0D1235;
+ --color-accent: #00D4FF;
+ --color-accent-blue: #0088FF;
+ --color-accent-violet: #6C63FF;
+ --color-text-secondary: #94A3B8;
+ --color-glass-border: rgba(255, 255, 255, 0.06);
+ --color-glass-bg: rgba(17, 22, 64, 0.5);
+
+ --font-sans: "Inter", system-ui, sans-serif;
+ --font-display: "Space Grotesk", system-ui, sans-serif;
+
+ --animate-float: float 8s ease-in-out infinite;
+ --animate-float-slow: float-slow 12s ease-in-out infinite;
+ --animate-glow-pulse: glow-pulse 3s ease-in-out infinite;
+ --animate-fade-in-up: fade-in-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
+ --animate-shimmer: shimmer 2.5s linear infinite;
+ --animate-spin-slow: spin 20s linear infinite;
}
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
+/* ── Keyframes ── */
+@keyframes float {
+ 0%, 100% { transform: translateY(0px) rotate(0deg); }
+ 33% { transform: translateY(-12px) rotate(0.5deg); }
+ 66% { transform: translateY(-6px) rotate(-0.3deg); }
+}
+
+@keyframes float-slow {
+ 0%, 100% { transform: translateY(0px) scale(1); }
+ 50% { transform: translateY(-20px) scale(1.02); }
+}
+
+@keyframes glow-pulse {
+ 0%, 100% { opacity: 0.4; }
+ 50% { opacity: 1; }
+}
+
+@keyframes fade-in-up {
+ from {
+ opacity: 0;
+ transform: translateY(40px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
}
}
-body {
- background: var(--background);
- color: var(--foreground);
- font-family: Arial, Helvetica, sans-serif;
+@keyframes shimmer {
+ 0% { background-position: -200% 0; }
+ 100% { background-position: 200% 0; }
+}
+
+@keyframes gradient-mesh {
+ 0% { background-position: 0% 50%; }
+ 50% { background-position: 100% 50%; }
+ 100% { background-position: 0% 50%; }
+}
+
+@keyframes spotlight-drift {
+ 0%, 100% { transform: translate(0, 0) scale(1); }
+ 25% { transform: translate(3%, -2%) scale(1.05); }
+ 50% { transform: translate(-2%, 3%) scale(0.98); }
+ 75% { transform: translate(1%, -1%) scale(1.02); }
+}
+
+/* ── Base ── */
+html {
+ scroll-behavior: smooth;
+}
+
+body {
+ background-color: #0A0F2E;
+ color: #ffffff;
+ font-family: "Inter", system-ui, sans-serif;
+ overflow-x: hidden;
+}
+
+/* ── Noise texture overlay on body ── */
+body::before {
+ content: "";
+ position: fixed;
+ inset: 0;
+ z-index: 9999;
+ pointer-events: none;
+ opacity: 0.035;
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
+ background-repeat: repeat;
+ background-size: 256px 256px;
+}
+
+/* ── Cinematic spotlight ambient layer ── */
+body::after {
+ content: "";
+ position: fixed;
+ inset: 0;
+ z-index: 0;
+ pointer-events: none;
+ background:
+ radial-gradient(ellipse 80% 60% at 75% 15%, rgba(0, 212, 255, 0.06) 0%, transparent 60%),
+ radial-gradient(ellipse 60% 50% at 20% 85%, rgba(108, 99, 255, 0.04) 0%, transparent 55%),
+ radial-gradient(ellipse 40% 40% at 50% 50%, rgba(0, 136, 255, 0.02) 0%, transparent 50%);
+ animation: spotlight-drift 20s ease-in-out infinite;
+}
+
+/* ── Scrollbar ── */
+::-webkit-scrollbar {
+ width: 6px;
+}
+
+::-webkit-scrollbar-track {
+ background: #060920;
+}
+
+::-webkit-scrollbar-thumb {
+ background: #1a2050;
+ border-radius: 3px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: #00D4FF;
+}
+
+/* ── Selection ── */
+::selection {
+ background: rgba(0, 212, 255, 0.25);
+ color: #ffffff;
+}
+
+/* ── Logo white filter ── */
+.logo-white {
+ filter: brightness(0) invert(1);
}
diff --git a/src/app/industries/page.tsx b/src/app/industries/page.tsx
new file mode 100644
index 0000000..3ba951c
--- /dev/null
+++ b/src/app/industries/page.tsx
@@ -0,0 +1,244 @@
+"use client";
+
+import { motion } from "framer-motion";
+import {
+ Landmark,
+ Building2,
+ HeartPulse,
+ ShieldCheck,
+ Factory,
+ Bot,
+ ArrowRight,
+ Check,
+ type LucideIcon,
+} from "lucide-react";
+import { GlassCard } from "@/components/GlassCard";
+import { GlowingButton } from "@/components/GlowingButton";
+import { SectionWrapper, itemVariants } from "@/components/SectionWrapper";
+import { ParticleBackground } from "@/components/ParticleBackground";
+
+interface Industry {
+ icon: LucideIcon;
+ name: string;
+ badgeClass: string;
+ checkClass: string;
+ valueProp: string;
+ useCases: string[];
+}
+
+const industries: Industry[] = [
+ {
+ icon: Landmark,
+ name: "Banking & Finance",
+ badgeClass:
+ "bg-accent/[0.06] border-accent/[0.12] text-accent",
+ checkClass: "text-accent",
+ valueProp:
+ "Protect every transaction. Verify every customer. Meet every regulation — without friction.",
+ useCases: [
+ "PSD2-compliant strong customer authentication",
+ "Mobile banking security & transaction signing",
+ "KYC/AML identity verification at onboarding",
+ "Secure customer communication channels",
+ "Digital contract & document signing",
+ ],
+ },
+ {
+ icon: Building2,
+ name: "Government & Public Sector",
+ badgeClass:
+ "bg-accent-blue/[0.06] border-accent-blue/[0.12] text-accent-blue",
+ checkClass: "text-accent-blue",
+ valueProp:
+ "Deliver citizen-grade digital services with sovereign security and full regulatory compliance.",
+ useCases: [
+ "National digital identity programs",
+ "Secure citizen-government communication",
+ "eGovernment document signing",
+ "Cross-border identity verification (eIDAS)",
+ "Classified information access control",
+ ],
+ },
+ {
+ icon: HeartPulse,
+ name: "Healthcare",
+ badgeClass:
+ "bg-accent-violet/[0.06] border-accent-violet/[0.12] text-accent-violet",
+ checkClass: "text-accent-violet",
+ valueProp:
+ "Protect patient data. Secure provider access. Enable trusted telemedicine at scale.",
+ useCases: [
+ "HIPAA-compliant patient authentication",
+ "Electronic health record access control",
+ "Telemedicine identity verification",
+ "Digital prescription signing",
+ "Secure provider-to-provider messaging",
+ ],
+ },
+ {
+ icon: ShieldCheck,
+ name: "Insurance",
+ badgeClass:
+ "bg-accent/[0.06] border-accent/[0.12] text-accent",
+ checkClass: "text-accent",
+ valueProp:
+ "Accelerate claims, reduce fraud, and deliver seamless digital experiences — securely.",
+ useCases: [
+ "Digital policy signing & renewal",
+ "Claims authentication & fraud prevention",
+ "Secure agent-customer communication",
+ "Identity verification for underwriting",
+ "Mobile-first customer engagement",
+ ],
+ },
+ {
+ icon: Factory,
+ name: "Enterprise",
+ badgeClass:
+ "bg-accent-blue/[0.06] border-accent-blue/[0.12] text-accent-blue",
+ checkClass: "text-accent-blue",
+ valueProp:
+ "Unify identity, access, and communication security across your entire organization.",
+ useCases: [
+ "Zero-trust workforce authentication",
+ "Secure internal communications",
+ "Digital contract & procurement signing",
+ "Partner & vendor identity verification",
+ "Privileged access management",
+ ],
+ },
+ {
+ icon: Bot,
+ name: "AI-First Companies",
+ badgeClass:
+ "bg-accent-violet/[0.06] border-accent-violet/[0.12] text-accent-violet",
+ checkClass: "text-accent-violet",
+ valueProp:
+ "Build trust into your AI products from day one. Give your agents verifiable identities and accountability.",
+ useCases: [
+ "AI agent identity & credential management",
+ "Autonomous action authorization",
+ "Human-in-the-loop verification workflows",
+ "Agent-to-agent trust protocols",
+ "Compliance & audit trail automation",
+ ],
+ },
+];
+
+export default function IndustriesPage() {
+ return (
+ <>
+ {/* Hero */}
+
+
+
+ {/* Cinematic spotlights */}
+
+
+ {/* Bottom fade */}
+
+
+
+
+
+ Industries
+
+
+ Trusted Across
+
+
+ Every Industry
+
+
+
+ From highly regulated financial services to cutting-edge AI
+ companies, KOBIL delivers digital trust infrastructure that meets
+ the unique demands of every sector.
+
+
+
+
+
+ {/* Industries */}
+ {industries.map((industry, index) => (
+
+
+
+
+
+ {industry.name}
+
+
+ {industry.name}
+
+
+ {industry.valueProp}
+
+
+
+
+
+
+ Key Use Cases
+
+
+ {industry.useCases.map((uc) => (
+
+
+ {uc}
+
+ ))}
+
+
+
+
+
+ ))}
+
+ {/* CTA */}
+
+ {/* Ambient glow */}
+
+
+
+
+ Don't See Your Industry?
+
+
+ KOBIL's trust platform is adaptable to any sector that
+ requires verified identity, secure communication, or digital
+ signatures. Let's talk about your specific needs.
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index f7fa87e..ec450ac 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,20 +1,39 @@
import type { Metadata } from "next";
-import { Geist, Geist_Mono } from "next/font/google";
+import { Inter, Space_Grotesk } from "next/font/google";
import "./globals.css";
+import { Navbar } from "@/components/Navbar";
+import { Footer } from "@/components/Footer";
+import { NoiseOverlay } from "@/components/NoiseOverlay";
-const geistSans = Geist({
- variable: "--font-geist-sans",
+const inter = Inter({
+ variable: "--font-inter",
subsets: ["latin"],
});
-const geistMono = Geist_Mono({
- variable: "--font-geist-mono",
+const spaceGrotesk = Space_Grotesk({
+ variable: "--font-space-grotesk",
subsets: ["latin"],
});
export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
+ title: "KOBIL | The Digital Trust Platform",
+ description:
+ "One platform for identity, communication, signatures, and payments. Trusted by governments and enterprises in 50+ countries for 25+ years.",
+ keywords: [
+ "digital trust",
+ "cybersecurity",
+ "identity verification",
+ "digital signatures",
+ "secure communication",
+ "AI agents",
+ "KOBIL",
+ ],
+ openGraph: {
+ title: "KOBIL | The Digital Trust Platform",
+ description:
+ "One platform for identity, communication, signatures, and payments.",
+ type: "website",
+ },
};
export default function RootLayout({
@@ -23,11 +42,17 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
+
- {children}
+
+ {/* Cinematic fixed lighting — persists across all pages */}
+
+
+
+ {children}
+
);
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 295f8fd..0e2c656 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,65 +1,488 @@
+"use client";
+
import Image from "next/image";
+import { motion } from "framer-motion";
+import {
+ Shield,
+ MessageSquareLock,
+ FileSignature,
+ Wallet,
+ Building2,
+ Landmark,
+ HeartPulse,
+ ShieldCheck,
+ Factory,
+ Bot,
+ ArrowRight,
+ ChevronRight,
+} from "lucide-react";
+import { GlassCard } from "@/components/GlassCard";
+import { GlowingButton } from "@/components/GlowingButton";
+import { SectionWrapper, itemVariants } from "@/components/SectionWrapper";
+import { AnimatedCounter } from "@/components/AnimatedCounter";
+import { ParticleBackground } from "@/components/ParticleBackground";
+
+/* ── Stagger helpers ── */
+const heroStagger = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: { staggerChildren: 0.12, delayChildren: 0.2 },
+ },
+};
+const heroChild = {
+ hidden: { opacity: 0, y: 50, filter: "blur(4px)" },
+ visible: {
+ opacity: 1,
+ y: 0,
+ filter: "blur(0px)",
+ transition: { duration: 0.8, ease: [0.16, 1, 0.3, 1] as const },
+ },
+};
+
+const platformPillars = [
+ {
+ icon: Shield,
+ title: "Identity",
+ description:
+ "Verify anyone, anywhere, in real time. Multi-factor authentication, biometric verification, and digital identity management at scale.",
+ image: "/images/section-identity.jpg",
+ accent: "from-accent to-accent-blue",
+ },
+ {
+ icon: MessageSquareLock,
+ title: "Communication",
+ description:
+ "End-to-end encrypted messaging, video, and data exchange. Every conversation verified, every participant authenticated.",
+ image: "/images/section-communication.jpg",
+ accent: "from-accent-blue to-accent-violet",
+ },
+ {
+ icon: FileSignature,
+ title: "Signatures",
+ description:
+ "Legally binding digital signatures with full audit trails. eIDAS-compliant, court-admissible, and instantly verifiable.",
+ image: "/images/section-signatures.jpg",
+ accent: "from-accent-violet to-accent",
+ },
+ {
+ icon: Wallet,
+ title: "Payments",
+ description:
+ "Secure transaction authorization and payment verification. PSD2-compliant strong customer authentication built in.",
+ image: "/images/section-payments.jpg",
+ accent: "from-accent to-accent-violet",
+ },
+];
+
+const painPoints = [
+ {
+ stat: "80%",
+ title: "of breaches involve identity",
+ description:
+ "Stolen credentials remain the #1 attack vector. Passwords alone are not enough.",
+ },
+ {
+ stat: "$4.5M",
+ title: "average cost of a data breach",
+ description:
+ "Organizations without unified trust infrastructure pay the highest price.",
+ },
+ {
+ stat: "67%",
+ title: "of enterprises use 10+ security tools",
+ description:
+ "Fragmented security stacks create gaps, complexity, and integration nightmares.",
+ },
+];
+
+const industries = [
+ { icon: Landmark, name: "Banking & Finance" },
+ { icon: Building2, name: "Government" },
+ { icon: HeartPulse, name: "Healthcare" },
+ { icon: ShieldCheck, name: "Insurance" },
+ { icon: Factory, name: "Enterprise" },
+ { icon: Bot, name: "AI-First Companies" },
+];
export default function Home() {
return (
-
-
-
-
-
- To get started, edit the page.tsx file.
-
-
- Looking for a starting point or more instructions? Head over to{" "}
-
+ {/* ════════════════════════════════════════════
+ HERO — Full-viewport cinematic entrance
+ ════════════════════════════════════════════ */}
+
+ {/* Particle grid */}
+
+
+ {/* ── UNBOXED hero image — 120% scale, bleeds off screen ── */}
+
+
+ {/* Cyan tint overlay */}
+
+
+
+ {/* Cinematic spotlights */}
+
+
+ {/* Atmospheric glow orbs */}
+
+
+
+ {/* Bottom fade */}
+
+
+ {/* Content — text floats OVER the image */}
+
+
+
+
+
+ Trusted by 100M+ identities worldwide
+
+
+
+
- Templates
- {" "}
- or the{" "}
-
+
+ Total Digital Trust.
+
+
+
+
- Learning
- {" "}
- center.
+ Identity. Communication. Signatures. Payments. Everything your
+ organization needs to build, verify, and maintain digital trust
+ — in one platform.
+
+
+
+
+ Book a Demo
+
+
+ Explore the Platform
+
+
+
+
+ {/* ── Trust bar ── */}
+
+
+ Trusted by leading enterprises and governments worldwide
+
+
+ {[
+ "Deutsche Bank",
+ "Bundesdruckerei",
+ "T-Systems",
+ "Allianz",
+ "Commerzbank",
+ ].map((name) => (
+
+ {name}
+
+ ))}
+
+
+
+
+
+ {/* ════════════════════════════════════════════
+ PROBLEM — "Digital Trust Is Broken"
+ ════════════════════════════════════════════ */}
+
+
+
+ The Problem
+
+ Digital Trust Is{" "}
+
+ Broken
+
+
+
+ Organizations cobble together dozens of point solutions, creating
+ security gaps, compliance nightmares, and terrible user experiences.
+
+
+
+
+ {painPoints.map((point) => (
+
+
+
+ {point.stat}
+
+
+ {point.title}
+
+
+ {point.description}
+
+
+
+ ))}
-
-
-
- Deploy Now
-
-
- Documentation
-
+
+
+ {/* ════════════════════════════════════════════
+ PLATFORM — Four Pillars
+ ════════════════════════════════════════════ */}
+
+
+
+ The Platform
+
+
+ Four Pillars of{" "}
+
+ Digital Trust
+
+
+
+ One unified platform. Four essential capabilities. Zero
+ fragmentation.
+
+
+
+
+ {platformPillars.map((pillar) => (
+
+
+ {/* Image fills entire card background */}
+
+ {/* Strong gradient overlay for readability */}
+
+ {/* Text pinned to bottom */}
+
+
+
+ {pillar.description}
+
+
+
+
+ ))}
-
-
+
+
+ {/* ════════════════════════════════════════════
+ AI AGENT TEASER
+ ════════════════════════════════════════════ */}
+
+
+
+
+
+ New: AI Agent Infrastructure
+
+
+ Built for Humans.
+
+
+ Ready for AI Agents.
+
+
+
+ As AI agents begin to act autonomously — signing documents, making
+ payments, accessing systems — they need verifiable identities and
+ trust infrastructure. KOBIL is ready.
+
+
+
+ Explore AI Agent Trust
+
+
+
+
+
+
+
+
+
+
+
+ {/* ════════════════════════════════════════════
+ NUMBERS
+ ════════════════════════════════════════════ */}
+
+
+
+ Proven at Scale
+
+
+ Trust at{" "}
+
+ Scale
+
+
+
+
+
+
+ {/* Divider line */}
+
+
+
+ {/* ════════════════════════════════════════════
+ INDUSTRY PREVIEW
+ ════════════════════════════════════════════ */}
+
+
+
+ Industries
+
+
+ Trusted Across{" "}
+
+ Every Industry
+
+
+
+ From regulated financial services to cutting-edge AI companies.
+
+
+
+
+ {industries.map((industry) => (
+
+
+
+
+ {industry.name}
+
+
+
+ ))}
+
+
+
+
+ See All Industries
+
+
+
+
+ {/* ════════════════════════════════════════════
+ FINAL CTA
+ ════════════════════════════════════════════ */}
+
+ {/* Ambient glow */}
+
+
+
+
+ Ready to Build{" "}
+
+ Digital Trust
+
+ ?
+
+
+ Join the organizations that trust KOBIL to secure their most
+ critical digital interactions. Book a demo and see the platform in
+ action.
+
+
+
+ Book a Demo
+
+
+ Learn More
+
+
+
+
+
+ >
);
}
diff --git a/src/app/platform/page.tsx b/src/app/platform/page.tsx
new file mode 100644
index 0000000..8006c48
--- /dev/null
+++ b/src/app/platform/page.tsx
@@ -0,0 +1,448 @@
+"use client";
+
+import Image from "next/image";
+import { motion } from "framer-motion";
+import {
+ Shield,
+ MessageSquareLock,
+ FileSignature,
+ Wallet,
+ ArrowRight,
+ Check,
+ Layers,
+ Zap,
+ Globe,
+ Lock,
+ Smartphone,
+ Cloud,
+} from "lucide-react";
+import { GlassCard } from "@/components/GlassCard";
+import { GlowingButton } from "@/components/GlowingButton";
+import { SectionWrapper, itemVariants } from "@/components/SectionWrapper";
+import { ParticleBackground } from "@/components/ParticleBackground";
+
+const principles = [
+ {
+ icon: Lock,
+ title: "Identity-First Architecture",
+ description: "Every action starts with verified identity. No exceptions.",
+ },
+ {
+ icon: Layers,
+ title: "Unified Platform",
+ description:
+ "One platform replaces dozens of point solutions. Simpler, safer, stronger.",
+ },
+ {
+ icon: Zap,
+ title: "Real-Time Trust",
+ description: "Continuous verification, not one-time checks. Trust is live.",
+ },
+ {
+ icon: Globe,
+ title: "Global Compliance",
+ description: "eIDAS, PSD2, GDPR, HIPAA — built in, not bolted on.",
+ },
+];
+
+const identityFeatures = [
+ "Multi-factor authentication (MFA)",
+ "Biometric verification (face, fingerprint, voice)",
+ "Digital identity wallets",
+ "Identity lifecycle management",
+ "Zero-trust access control",
+ "Real-time risk scoring",
+];
+
+const communicationFeatures = [
+ "End-to-end encrypted messaging",
+ "Secure video conferencing",
+ "Verified sender identity",
+ "Tamper-proof message delivery",
+ "Encrypted file sharing",
+ "Audit trail for all communications",
+];
+
+const signatureFeatures = [
+ "Qualified electronic signatures (QES)",
+ "Advanced electronic signatures (AES)",
+ "eIDAS-compliant & court-admissible",
+ "Bulk signing workflows",
+ "Timestamp authority integration",
+ "Complete audit trails",
+];
+
+const paymentFeatures = [
+ "Strong customer authentication (SCA)",
+ "PSD2-compliant authorization",
+ "Transaction signing & verification",
+ "Multi-channel payment security",
+ "Real-time fraud detection",
+ "Secure mobile payments",
+];
+
+export default function PlatformPage() {
+ return (
+ <>
+ {/* Hero */}
+
+
+
+
+
+
+
+
+ The Platform
+
+
+ The Trust Platform
+
+
+ That Does It All
+
+
+
+ Identity, communication, signatures, and payments — unified in a
+ single, identity-first platform trusted by enterprises and
+ governments worldwide.
+
+
+
+
+
+
+ {/* Architecture Principles */}
+
+
+
+ Core Architecture
+
+
+ Identity-First{" "}
+
+ Architecture
+
+
+
+ Every capability starts with a verified identity. This
+ isn't just a feature — it's the foundation.
+
+
+
+
+ {principles.map((p) => (
+
+
+
+
+ {p.title}
+
+
+ {p.description}
+
+
+
+ ))}
+
+
+
+ {/* Pillar 1: Identity */}
+
+
+
+
+
+ Pillar 1
+
+
+ Digital Identity &{" "}
+ Authentication
+
+
+ Know exactly who you're dealing with — every time, every
+ channel, every device. From onboarding to ongoing verification,
+ KOBIL provides the identity layer your organization needs.
+
+
+ {identityFeatures.map((f) => (
+
+
+ {f}
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+ {/* Pillar 2: Communication */}
+
+
+
+
+
+
+
+
+
+
+ Pillar 2
+
+
+ Secure{" "}
+ Communication
+
+
+ Every message verified. Every participant authenticated. From
+ encrypted chat to secure video, KOBIL ensures your communications
+ are truly private and tamper-proof.
+
+
+ {communicationFeatures.map((f) => (
+
+
+ {f}
+
+ ))}
+
+
+
+
+
+ {/* Pillar 3: Signatures */}
+
+
+
+
+
+ Pillar 3
+
+
+ Digital{" "}
+ Signatures
+
+
+ Legally binding. Instantly verifiable. Court-admissible. KOBIL
+ digital signatures meet the highest regulatory standards while
+ delivering a seamless signing experience.
+
+
+ {signatureFeatures.map((f) => (
+
+
+ {f}
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+ {/* Pillar 4: Payments */}
+
+
+
+
+
+
+
+
+
+
+ Pillar 4
+
+
+ Secure{" "}
+ Payments
+
+
+ Authorize every transaction with confidence. KOBIL delivers
+ PSD2-compliant strong customer authentication with real-time fraud
+ detection and multi-channel support.
+
+
+ {paymentFeatures.map((f) => (
+
+
+ {f}
+
+ ))}
+
+
+
+
+
+ {/* Integration */}
+
+
+
+ Integration
+
+
+ Two Paths to{" "}
+
+ Trust
+
+
+
+ Whether you need a full platform or modular APIs, KOBIL adapts to
+ your architecture.
+
+
+
+
+
+
+
+
+ KOBIL SDK & App
+
+
+ Deploy the full KOBIL experience with branded mobile apps and
+ SDKs. Pre-built UI components, biometric integration, and
+ offline capability out of the box.
+
+
+ {["White-label mobile app", "iOS & Android SDKs", "Offline authentication", "Push notification triggers"].map((f) => (
+
+
+ {f}
+
+ ))}
+
+
+
+
+
+
+
+
+ KOBIL API Platform
+
+
+ Integrate KOBIL capabilities into your existing systems via
+ RESTful APIs. Full flexibility with enterprise-grade
+ reliability.
+
+
+ {["RESTful API endpoints", "Webhooks & event streams", "SSO & federation support", "Custom workflow builder"].map((f) => (
+
+
+ {f}
+
+ ))}
+
+
+
+
+
+
+ {/* CTA */}
+
+
+
+
+
+ See the Platform in{" "}
+ Action
+
+
+ Schedule a personalized demo and discover how KOBIL can simplify
+ your trust infrastructure.
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/security/page.tsx b/src/app/security/page.tsx
new file mode 100644
index 0000000..919997f
--- /dev/null
+++ b/src/app/security/page.tsx
@@ -0,0 +1,339 @@
+"use client";
+
+import Image from "next/image";
+import { motion } from "framer-motion";
+import {
+ Shield,
+ ArrowRight,
+ Lock,
+ Eye,
+ Server,
+ AlertTriangle,
+ Fingerprint,
+ ShieldAlert,
+ KeyRound,
+ Bug,
+ Wifi,
+ Smartphone,
+ Award,
+ Check,
+} from "lucide-react";
+import { GlassCard } from "@/components/GlassCard";
+import { GlowingButton } from "@/components/GlowingButton";
+import { SectionWrapper, itemVariants } from "@/components/SectionWrapper";
+import { ParticleBackground } from "@/components/ParticleBackground";
+
+/* ── Stagger helpers ── */
+const heroStagger = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: { staggerChildren: 0.12, delayChildren: 0.2 },
+ },
+};
+const heroChild = {
+ hidden: { opacity: 0, y: 50, filter: "blur(4px)" },
+ visible: {
+ opacity: 1,
+ y: 0,
+ filter: "blur(0px)",
+ transition: { duration: 0.8, ease: [0.16, 1, 0.3, 1] as const },
+ },
+};
+
+const securityLayers = [
+ {
+ icon: Fingerprint,
+ title: "Identity Layer",
+ description:
+ "Multi-factor authentication, biometric verification, and continuous identity assurance.",
+ },
+ {
+ icon: Lock,
+ title: "Encryption Layer",
+ description:
+ "End-to-end encryption for data at rest and in transit. AES-256 and TLS 1.3 standards.",
+ },
+ {
+ icon: Eye,
+ title: "Monitoring Layer",
+ description:
+ "Real-time threat detection, behavioral analytics, and anomaly detection across all channels.",
+ },
+ {
+ icon: Server,
+ title: "Infrastructure Layer",
+ description:
+ "Hardened cloud infrastructure with HSM-backed key management and geo-redundant deployment.",
+ },
+ {
+ icon: ShieldAlert,
+ title: "Policy Layer",
+ description:
+ "Dynamic security policies, risk-based access control, and automated compliance enforcement.",
+ },
+ {
+ icon: AlertTriangle,
+ title: "Response Layer",
+ description:
+ "Automated incident response, instant revocation, and forensic audit capabilities.",
+ },
+];
+
+const threats = [
+ { icon: KeyRound, name: "Credential Theft", status: "Mitigated" },
+ { icon: Bug, name: "Malware & Ransomware", status: "Detected & Blocked" },
+ { icon: Wifi, name: "Man-in-the-Middle", status: "Prevented" },
+ { icon: Smartphone, name: "SIM Swapping", status: "Mitigated" },
+ { icon: ShieldAlert, name: "Phishing Attacks", status: "Detected" },
+ { icon: AlertTriangle, name: "Session Hijacking", status: "Prevented" },
+ { icon: Eye, name: "Insider Threats", status: "Monitored" },
+ { icon: Lock, name: "Data Exfiltration", status: "Blocked" },
+ { icon: Server, name: "API Abuse", status: "Rate-Limited & Blocked" },
+];
+
+const certifications = [
+ {
+ name: "ISO 27001",
+ description: "Information Security Management",
+ },
+ {
+ name: "eIDAS",
+ description: "EU Electronic Identification & Trust Services",
+ },
+ {
+ name: "PSD2",
+ description: "Payment Services Directive 2 Compliance",
+ },
+ {
+ name: "GDPR",
+ description: "General Data Protection Regulation",
+ },
+ {
+ name: "SOC 2 Type II",
+ description: "Service Organization Control",
+ },
+ {
+ name: "Common Criteria",
+ description: "EAL4+ Certified Components",
+ },
+];
+
+export default function SecurityPage() {
+ return (
+ <>
+ {/* Hero */}
+
+
+
+ {/* ── UNBOXED hero image — absolutely positioned background ── */}
+
+
+
+
+
+ {/* Cinematic spotlights */}
+
+
+ {/* Glow orb behind headline */}
+
+
+ {/* Bottom fade */}
+
+
+
+
+
+
+
+ Enterprise-Grade Security
+
+
+
+
+
+ Security Architecture
+
+
+
+
+ Security
+
+
+ That Thinks
+
+
+
+
+ Multi-layered, AI-enhanced security architecture built on 25+
+ years of protecting the world's most sensitive digital
+ interactions.
+
+
+
+
+ Book a Demo
+
+
+
+
+
+
+ {/* Security Architecture */}
+
+
+
+ Defense-in-Depth
+
+
+ Six Layers of{" "}
+ Defense
+
+
+ Security isn't a feature — it's the architecture. Every
+ layer works together to create an impenetrable trust boundary.
+
+
+
+
+ {securityLayers.map((layer) => (
+
+
+
+ {layer.title}
+
+ {layer.description}
+
+
+
+ ))}
+
+
+
+ {/* Threat Detection */}
+
+
+
+ Threat Intelligence
+
+
+ Threats We{" "}
+ Neutralize
+
+
+ Real-time protection against the full spectrum of modern cyber
+ threats.
+
+
+
+
+ {threats.map((threat) => (
+
+
+
+
+
+ {threat.name}
+
+
+ {threat.status}
+
+
+
+
+ ))}
+
+
+
+ {/* Certifications */}
+
+
+
+ Compliance
+
+
+ Certified &{" "}
+ Compliant
+
+
+ Meeting the highest security and compliance standards globally.
+
+
+
+
+ {certifications.map((cert) => (
+
+
+
+ {cert.name}
+
+ {cert.description}
+
+
+
+ ))}
+
+
+
+ {/* CTA */}
+
+ {/* Ambient glow */}
+
+
+
+
+ Security Questions?{" "}
+ Let's Talk.
+
+
+ Our security team is ready to walk you through our architecture,
+ certifications, and how we protect your most critical assets.
+
+
+
+ Book a Security Review{" "}
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/components/AnimatedCounter.tsx b/src/components/AnimatedCounter.tsx
new file mode 100644
index 0000000..275e92a
--- /dev/null
+++ b/src/components/AnimatedCounter.tsx
@@ -0,0 +1,62 @@
+"use client";
+
+import { useEffect, useRef, useState } from "react";
+import { useInView } from "framer-motion";
+
+interface AnimatedCounterProps {
+ target: number;
+ suffix?: string;
+ prefix?: string;
+ duration?: number;
+ label: string;
+}
+
+export function AnimatedCounter({
+ target,
+ suffix = "",
+ prefix = "",
+ duration = 2.5,
+ label,
+}: AnimatedCounterProps) {
+ const ref = useRef(null);
+ const isInView = useInView(ref, { once: true, margin: "-100px" });
+ const [count, setCount] = useState(0);
+
+ useEffect(() => {
+ if (!isInView) return;
+
+ let startTime: number;
+ const animate = (timestamp: number) => {
+ if (!startTime) startTime = timestamp;
+ const progress = Math.min(
+ (timestamp - startTime) / (duration * 1000),
+ 1
+ );
+ const eased = 1 - Math.pow(1 - progress, 4);
+ setCount(Math.floor(eased * target));
+
+ if (progress < 1) {
+ requestAnimationFrame(animate);
+ } else {
+ setCount(target);
+ }
+ };
+
+ requestAnimationFrame(animate);
+ }, [isInView, target, duration]);
+
+ return (
+
+
+
+ {prefix}
+ {count}
+ {suffix}
+
+
+
+ {label}
+
+
+ );
+}
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
new file mode 100644
index 0000000..86e7fec
--- /dev/null
+++ b/src/components/Footer.tsx
@@ -0,0 +1,119 @@
+import Link from "next/link";
+import Image from "next/image";
+import { Linkedin, Twitter } from "lucide-react";
+
+const footerLinks = [
+ {
+ title: "Platform",
+ links: [
+ { href: "/platform", label: "Overview" },
+ { href: "/platform#identity", label: "Identity" },
+ { href: "/platform#communication", label: "Communication" },
+ { href: "/platform#signatures", label: "Signatures" },
+ { href: "/platform#payments", label: "Payments" },
+ ],
+ },
+ {
+ title: "Solutions",
+ links: [
+ { href: "/ai-agents", label: "AI Agents" },
+ { href: "/industries", label: "Industries" },
+ { href: "/security", label: "Security" },
+ ],
+ },
+ {
+ title: "Company",
+ links: [
+ { href: "/contact", label: "Contact" },
+ { href: "/contact", label: "Book a Demo" },
+ ],
+ },
+];
+
+export function Footer() {
+ return (
+
+
+
+ {/* Logo & tagline */}
+
+
+
+
+
+ The Digital Trust Platform. One platform for identity,
+ communication, signatures, and payments.
+
+
+ Headquartered in Germany. Trusted Worldwide.
+
+
+
+
+ {/* Link columns */}
+ {footerLinks.map((column) => (
+
+
+ {column.title}
+
+
+ {column.links.map((link) => (
+
+
+ {link.label}
+
+
+ ))}
+
+
+ ))}
+
+
+
+
+ © {new Date().getFullYear()} KOBIL GmbH. All rights reserved.
+
+
+
+ Privacy Policy
+
+
+ Terms of Service
+
+
+ Imprint
+
+
+
+
+
+ );
+}
diff --git a/src/components/GlassCard.tsx b/src/components/GlassCard.tsx
new file mode 100644
index 0000000..14b4dc1
--- /dev/null
+++ b/src/components/GlassCard.tsx
@@ -0,0 +1,62 @@
+"use client";
+
+import { useRef, useState } from "react";
+import { motion } from "framer-motion";
+
+interface GlassCardProps {
+ children: React.ReactNode;
+ className?: string;
+ hover?: boolean;
+}
+
+export function GlassCard({
+ children,
+ className = "",
+ hover = true,
+}: GlassCardProps) {
+ const ref = useRef(null);
+ const [spotlightPos, setSpotlightPos] = useState({ x: 0, y: 0 });
+ const [isHovered, setIsHovered] = useState(false);
+
+ const handleMouseMove = (e: React.MouseEvent) => {
+ if (!ref.current || !hover) return;
+ const rect = ref.current.getBoundingClientRect();
+ setSpotlightPos({
+ x: e.clientX - rect.left,
+ y: e.clientY - rect.top,
+ });
+ };
+
+ return (
+ setIsHovered(true)}
+ onMouseLeave={() => setIsHovered(false)}
+ whileHover={
+ hover
+ ? {
+ y: -2,
+ borderColor: "rgba(255,255,255,0.1)",
+ transition: { duration: 0.3 },
+ }
+ : undefined
+ }
+ >
+ {/* Spotlight glow */}
+ {hover && (
+
+ )}
+ {/* Top edge highlight */}
+
+ {children}
+
+ );
+}
diff --git a/src/components/GlowingButton.tsx b/src/components/GlowingButton.tsx
new file mode 100644
index 0000000..1ae54a5
--- /dev/null
+++ b/src/components/GlowingButton.tsx
@@ -0,0 +1,54 @@
+"use client";
+
+import Link from "next/link";
+import { motion } from "framer-motion";
+
+interface GlowingButtonProps {
+ href: string;
+ children: React.ReactNode;
+ variant?: "primary" | "ghost";
+ className?: string;
+}
+
+export function GlowingButton({
+ href,
+ children,
+ variant = "primary",
+ className = "",
+}: GlowingButtonProps) {
+ if (variant === "ghost") {
+ return (
+
+ {children}
+
+ );
+ }
+
+ return (
+
+ {/* Outer glow */}
+
+ {/* Shimmer sweep */}
+
+
+ {children}
+
+
+ );
+}
diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx
new file mode 100644
index 0000000..33cdeb5
--- /dev/null
+++ b/src/components/Navbar.tsx
@@ -0,0 +1,157 @@
+"use client";
+
+import { useState, useEffect } from "react";
+import Link from "next/link";
+import Image from "next/image";
+import { usePathname } from "next/navigation";
+import { motion, AnimatePresence } from "framer-motion";
+import { Menu, X } from "lucide-react";
+
+const navLinks = [
+ { href: "/", label: "Home" },
+ { href: "/platform", label: "Platform" },
+ { href: "/ai-agents", label: "AI Agents" },
+ { href: "/industries", label: "Industries" },
+ { href: "/security", label: "Security" },
+];
+
+export function Navbar() {
+ const pathname = usePathname();
+ const [mobileOpen, setMobileOpen] = useState(false);
+ const [hidden, setHidden] = useState(false);
+ const [lastScrollY, setLastScrollY] = useState(0);
+ const [scrolled, setScrolled] = useState(false);
+
+ useEffect(() => {
+ const handleScroll = () => {
+ const currentScrollY = window.scrollY;
+ setHidden(currentScrollY > lastScrollY && currentScrollY > 80);
+ setScrolled(currentScrollY > 20);
+ setLastScrollY(currentScrollY);
+ };
+ window.addEventListener("scroll", handleScroll, { passive: true });
+ return () => window.removeEventListener("scroll", handleScroll);
+ }, [lastScrollY]);
+
+ useEffect(() => {
+ setMobileOpen(false);
+ }, [pathname]);
+
+ return (
+ <>
+
+
+
+
+
+
+ {/* Desktop nav */}
+
+ {navLinks.map((link) => (
+
+ {link.label}
+ {pathname === link.href && (
+
+ )}
+
+ ))}
+
+
+
+
+ Book a Demo
+
+
+
+ {/* Mobile hamburger */}
+ setMobileOpen(!mobileOpen)}
+ aria-label="Toggle menu"
+ >
+ {mobileOpen ? : }
+
+
+
+
+ {/* Mobile menu */}
+
+ {mobileOpen && (
+
+
+ {navLinks.map((link, i) => (
+
+ setMobileOpen(false)}
+ >
+ {link.label}
+
+
+ ))}
+
+ setMobileOpen(false)}
+ >
+ Book a Demo
+
+
+
+
+ )}
+
+ >
+ );
+}
diff --git a/src/components/NoiseOverlay.tsx b/src/components/NoiseOverlay.tsx
new file mode 100644
index 0000000..e99d690
--- /dev/null
+++ b/src/components/NoiseOverlay.tsx
@@ -0,0 +1,7 @@
+"use client";
+
+// Noise is now rendered via body::before in globals.css for better performance.
+// This component is kept as a no-op for backwards compatibility with layout.tsx.
+export function NoiseOverlay() {
+ return null;
+}
diff --git a/src/components/ParticleBackground.tsx b/src/components/ParticleBackground.tsx
new file mode 100644
index 0000000..8e626a9
--- /dev/null
+++ b/src/components/ParticleBackground.tsx
@@ -0,0 +1,98 @@
+"use client";
+
+import { useEffect, useRef } from "react";
+
+export function ParticleBackground() {
+ const canvasRef = useRef(null);
+
+ useEffect(() => {
+ const canvas = canvasRef.current;
+ if (!canvas) return;
+
+ const ctx = canvas.getContext("2d");
+ if (!ctx) return;
+
+ let animationId: number;
+ const particles: {
+ x: number;
+ y: number;
+ vx: number;
+ vy: number;
+ size: number;
+ opacity: number;
+ }[] = [];
+
+ const resize = () => {
+ canvas.width = canvas.offsetWidth * window.devicePixelRatio;
+ canvas.height = canvas.offsetHeight * window.devicePixelRatio;
+ ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
+ };
+
+ const createParticles = () => {
+ const count = Math.floor((canvas.offsetWidth * canvas.offsetHeight) / 15000);
+ for (let i = 0; i < count; i++) {
+ particles.push({
+ x: Math.random() * canvas.offsetWidth,
+ y: Math.random() * canvas.offsetHeight,
+ vx: (Math.random() - 0.5) * 0.3,
+ vy: (Math.random() - 0.5) * 0.3,
+ size: Math.random() * 2 + 0.5,
+ opacity: Math.random() * 0.5 + 0.1,
+ });
+ }
+ };
+
+ const drawParticles = () => {
+ ctx.clearRect(0, 0, canvas.offsetWidth, canvas.offsetHeight);
+
+ particles.forEach((p, i) => {
+ p.x += p.vx;
+ p.y += p.vy;
+
+ if (p.x < 0) p.x = canvas.offsetWidth;
+ if (p.x > canvas.offsetWidth) p.x = 0;
+ if (p.y < 0) p.y = canvas.offsetHeight;
+ if (p.y > canvas.offsetHeight) p.y = 0;
+
+ ctx.beginPath();
+ ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);
+ ctx.fillStyle = `rgba(0, 212, 255, ${p.opacity})`;
+ ctx.fill();
+
+ // Draw connections
+ for (let j = i + 1; j < particles.length; j++) {
+ const dx = p.x - particles[j].x;
+ const dy = p.y - particles[j].y;
+ const dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < 120) {
+ ctx.beginPath();
+ ctx.moveTo(p.x, p.y);
+ ctx.lineTo(particles[j].x, particles[j].y);
+ ctx.strokeStyle = `rgba(0, 212, 255, ${0.06 * (1 - dist / 120)})`;
+ ctx.lineWidth = 0.5;
+ ctx.stroke();
+ }
+ }
+ });
+
+ animationId = requestAnimationFrame(drawParticles);
+ };
+
+ resize();
+ createParticles();
+ drawParticles();
+
+ window.addEventListener("resize", resize);
+ return () => {
+ window.removeEventListener("resize", resize);
+ cancelAnimationFrame(animationId);
+ };
+ }, []);
+
+ return (
+
+ );
+}
diff --git a/src/components/SectionWrapper.tsx b/src/components/SectionWrapper.tsx
new file mode 100644
index 0000000..c60687a
--- /dev/null
+++ b/src/components/SectionWrapper.tsx
@@ -0,0 +1,48 @@
+"use client";
+
+import { motion } from "framer-motion";
+
+interface SectionWrapperProps {
+ children: React.ReactNode;
+ className?: string;
+ id?: string;
+}
+
+const containerVariants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.08,
+ delayChildren: 0.05,
+ },
+ },
+};
+
+export const itemVariants = {
+ hidden: { opacity: 0, y: 40 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.7, ease: [0.16, 1, 0.3, 1] as const },
+ },
+};
+
+export function SectionWrapper({
+ children,
+ className = "",
+ id,
+}: SectionWrapperProps) {
+ return (
+
+ {children}
+
+ );
+}