diff --git a/src/app/globals.css b/src/app/globals.css index 6cf72ed..c21e930 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -48,71 +48,71 @@ :root { --radius: 0.625rem; - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); + --background: oklch(0.98 0.01 195); + --foreground: oklch(0.145 0.02 195); --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); + --card-foreground: oklch(0.145 0.02 195); --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); + --popover-foreground: oklch(0.145 0.02 195); + --primary: oklch(0.65 0.18 195); + --primary-foreground: oklch(0.98 0 0); + --secondary: oklch(0.85 0.08 280); + --secondary-foreground: oklch(0.2 0.02 280); + --muted: oklch(0.95 0.02 195); + --muted-foreground: oklch(0.45 0.05 195); + --accent: oklch(0.75 0.15 145); + --accent-foreground: oklch(0.15 0.02 145); --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); + --border: oklch(0.88 0.04 195); + --input: oklch(0.92 0.02 195); + --ring: oklch(0.65 0.18 195); + --chart-1: oklch(0.65 0.18 195); + --chart-2: oklch(0.7 0.15 145); + --chart-3: oklch(0.65 0.12 280); + --chart-4: oklch(0.75 0.18 85); + --chart-5: oklch(0.7 0.2 30); + --sidebar: oklch(0.98 0.01 195); + --sidebar-foreground: oklch(0.145 0.02 195); + --sidebar-primary: oklch(0.65 0.18 195); + --sidebar-primary-foreground: oklch(0.98 0 0); + --sidebar-accent: oklch(0.92 0.04 195); + --sidebar-accent-foreground: oklch(0.2 0.02 195); + --sidebar-border: oklch(0.88 0.04 195); + --sidebar-ring: oklch(0.65 0.18 195); } .dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.205 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); + --background: oklch(0.12 0.02 195); + --foreground: oklch(0.95 0.01 195); + --card: oklch(0.18 0.02 195); + --card-foreground: oklch(0.95 0.01 195); + --popover: oklch(0.18 0.02 195); + --popover-foreground: oklch(0.95 0.01 195); + --primary: oklch(0.75 0.18 195); + --primary-foreground: oklch(0.12 0.02 195); + --secondary: oklch(0.35 0.08 280); + --secondary-foreground: oklch(0.95 0.01 280); + --muted: oklch(0.25 0.02 195); + --muted-foreground: oklch(0.65 0.05 195); + --accent: oklch(0.6 0.15 145); + --accent-foreground: oklch(0.95 0.01 145); --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.556 0 0); + --border: oklch(0.3 0.04 195); + --input: oklch(0.25 0.02 195); + --ring: oklch(0.75 0.18 195); + --chart-1: oklch(0.75 0.18 195); + --chart-2: oklch(0.7 0.15 145); + --chart-3: oklch(0.65 0.12 280); + --chart-4: oklch(0.75 0.18 85); + --chart-5: oklch(0.7 0.2 30); + --sidebar: oklch(0.15 0.02 195); + --sidebar-foreground: oklch(0.95 0.01 195); + --sidebar-primary: oklch(0.75 0.18 195); + --sidebar-primary-foreground: oklch(0.12 0.02 195); + --sidebar-accent: oklch(0.25 0.04 195); + --sidebar-accent-foreground: oklch(0.95 0.01 195); + --sidebar-border: oklch(0.3 0.04 195); + --sidebar-ring: oklch(0.75 0.18 195); } @layer base { diff --git a/src/app/page.tsx b/src/app/page.tsx index f4f94f3..a1a5979 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -19,6 +19,9 @@ import { CheckCircle, Shield, Play, + ListOrdered, + Target, + Layers, } from "lucide-react"; export default async function HomePage() { @@ -76,85 +79,92 @@ export default async function HomePage() { return (
- rVote uses quadratic voting to give every voice weight while preventing - any single actor from dominating. Proposals are ranked by the community, - and the best ideas rise to the top. + rVote uses quadratic ranking to let your community democratically + prioritize proposals. The best ideas rise to the top through collective intelligence, + then advance to final voting.
- A voting system where the cost of each additional vote increases - quadratically, making it expensive to dominate but cheap to participate. + A system where expressing strong preference costs progressively more, + creating a fair and balanced priority list that reflects true community consensus.
- In traditional systems, those with more resources (time, money, - influence) can easily dominate outcomes. + Traditional priority systems let those with more time, resources, or influence + dominate what gets attention.
- Quadratic voting balances participation and conviction by making + Quadratic ranking balances participation and conviction by making additional votes progressively more expensive.
- It's more efficient to spread votes across proposals you support - than to concentrate them on one. + Spreading votes across proposals you support is more efficient than concentrating on one.
- Proposals go through ranking before reaching a final vote, ensuring - only well-supported ideas get full consideration. + Transform your community's ideas into a democratically prioritized backlog + through two simple stages.
- When a proposal reaches a score of +100, it + When a proposal reaches a score of +100, it automatically advances to the final voting stage.
This ensures only proposals with genuine community support move - forward. + forward for implementation decisions.
Everything you need for democratic backlog management
@@ -307,10 +326,10 @@ export default async function HomePage() {
-
@@ -319,10 +338,10 @@ export default async function HomePage() {
-
@@ -331,10 +350,10 @@ export default async function HomePage() {
-
@@ -349,27 +368,27 @@ export default async function HomePage() {
{(rankingCount > 0 || userCount > 1) && (
Members Being Ranked In Voting Passed
- Experience quadratic voting firsthand. Try the interactive demo or
- create an account to start participating in community governance.
+ Experience quadratic ranking firsthand. Try the interactive demo or
+ create an account to start building your community's backlog together.
Vote Decay
Sybil Resistant
Auto Promotion
Active Proposals
- Ready to give it a try?
+ Ready to prioritize democratically?