diff --git a/app/globals.css b/app/globals.css
index 8d3ae6e..a88e47c 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -84,6 +84,51 @@
background: radial-gradient(ellipse 80% 50% at 50% 0%, #1c1c1c 0%, #111 100%);
}
+ /* ROI Calculator slider */
+ .roi-slider {
+ -webkit-appearance: none;
+ appearance: none;
+ height: 6px;
+ border-radius: 9999px;
+ background: linear-gradient(
+ to right,
+ var(--foreground) 0%,
+ var(--foreground) var(--slider-pct, 50%),
+ var(--border) var(--slider-pct, 50%),
+ var(--border) 100%
+ );
+ outline: none;
+ cursor: pointer;
+ }
+
+ .roi-slider::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 18px;
+ height: 18px;
+ border-radius: 50%;
+ background: var(--foreground);
+ border: 2px solid var(--background);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
+ cursor: grab;
+ transition: transform 0.15s;
+ }
+
+ .roi-slider::-webkit-slider-thumb:active {
+ cursor: grabbing;
+ transform: scale(1.15);
+ }
+
+ .roi-slider::-moz-range-thumb {
+ width: 18px;
+ height: 18px;
+ border-radius: 50%;
+ background: var(--foreground);
+ border: 2px solid var(--background);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
+ cursor: grab;
+ }
+
.dark-section-cta {
background: radial-gradient(ellipse 80% 60% at 50% 100%, #0f0f0f 0%, #060606 100%);
}
diff --git a/app/resources/page.tsx b/app/resources/page.tsx
index 84d9e24..5651137 100644
--- a/app/resources/page.tsx
+++ b/app/resources/page.tsx
@@ -1,23 +1,88 @@
import type { Metadata } from "next";
+import Link from "next/link";
import { siteConfig } from "@/lib/config";
import { buildPageMetadata } from "@/lib/seo";
export const metadata: Metadata = buildPageMetadata({
- title: `Resources — Blog & Demos | ${siteConfig.name}`,
+ title: `Resources — Tools, Blog & More | ${siteConfig.name}`,
description:
- "Blog posts and demos. Everything you need to run your music business with AI agents — strategy, content, fans, and operations.",
+ "Tools, blog posts, playbooks, and demos. Everything you need to run your music business with AI agents.",
path: "/resources",
});
+const resources = [
+ {
+ title: "ROI Calculator",
+ description:
+ "See how much time and money AI agents could save your team. Input your numbers, get your answer.",
+ href: "/tools/roi",
+ badge: "New",
+ },
+ {
+ title: "Blog",
+ description:
+ "Insights on AI in music, agent architecture, and running a modern label.",
+ href: "/blog",
+ },
+ {
+ title: "The Playbook",
+ description:
+ "A tactical guide to running your music business with AI agents.",
+ href: "/playbook",
+ },
+ {
+ title: "Demos",
+ description:
+ "See Recoup in action. Walkthroughs of agents running real music operations.",
+ href: "/learn/demos",
+ },
+];
+
export default function ResourcesPage() {
return (
-
-
- Resources
-
-
- Coming soon.
-
+
+
+
+ Resources
+
+
+ Tools, guides, and insights to help you run your music business with
+ AI.
+
+
+
+
+ {resources.map((r) => (
+
+
+
+
{r.title}
+ {r.badge && (
+
+ {r.badge}
+
+ )}
+
+
+ {r.description}
+
+
+
+ →
+
+
+ ))}
+
);
}
diff --git a/app/tools/roi/page.tsx b/app/tools/roi/page.tsx
new file mode 100644
index 0000000..1577f87
--- /dev/null
+++ b/app/tools/roi/page.tsx
@@ -0,0 +1,57 @@
+import type { Metadata } from "next";
+import { buildPageMetadata } from "@/lib/seo";
+import { roiCopy } from "@/lib/copy/roi";
+import { ROICalculator } from "@/components/roi/ROICalculator";
+
+export const metadata: Metadata = buildPageMetadata({
+ title: "ROI Calculator — How Much Could You Save? | Recoup",
+ description:
+ "Calculate how much time and money AI agents could save your music business. Input your roster size, team costs, and content volume — get your ROI in seconds.",
+ path: "/tools/roi",
+});
+
+export default function ROIPage() {
+ return (
+