-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
474 lines (431 loc) · 27.8 KB
/
Copy pathindex.html
File metadata and controls
474 lines (431 loc) · 27.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>P4A: The People's Purple Protopian Party</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&family=Rajdhani:wght@500;600;700&display=swap" rel="stylesheet">
<!-- Chosen Palette: Protopian Light Synthesis (Warm neutral background #F8FAFC, Deep Canvas text #16082B, Synthesis Neon accents #B533FF, Soft Emerald for ecological highlights, plus Core Blue #2563EB and Core Red #DC2626). -->
<!-- Application Structure Plan: A clean, calm, and linear invitation to participate. We guide the user through the core philosophy (The Purple Synthesis), explain the practical rhythm of engagement (Major and Minor Civic Surges), outline the secure technical foundation (Decentralised Systems), and present grounded policy outcomes. The design prioritises whitespace, legible typography, and gentle interactions to reflect stewardship and joy, avoiding overwhelming corporate dashboard layouts. -->
<!-- Visualization & Content Choices:
1. The Purple Synthesis -> Goal: Inform -> CSS Flexbox Diagram -> Interaction: Hover states to reveal the synthesis -> Justification: Clearly illustrates the blending of Blue and Red traditions into a unified Purple vision without relying on SVG.
2. Civic Surge Rhythm -> Goal: Change/Process -> Interactive Line Chart (Chart.js) -> Interaction: Hover tooltips explaining the seasonal cadence -> Justification: Visually proves that gamified democracy is a sustainable "pulse" (Major March surges, gentle Minor ripples), demonstrating respect for the community's time.
3. The Sovereignty Stack -> Goal: Organize -> Interactive HTML/Tailwind List -> Interaction: Click to expand details -> Justification: Translates complex open-source governance concepts into a tactile, easy-to-understand format.
-->
<!-- CONFIRMATION: NO SVG graphics used. NO Mermaid JS used. -->
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'sans-serif'],
display: ['Rajdhani', 'sans-serif'],
},
colors: {
'p-dark': '#16082B',
'p-neon': '#B533FF',
'p-light': '#F3E8FF',
'p-emerald': '#10B981',
'p-blue': '#2563EB',
'p-red': '#DC2626'
}
}
}
}
</script>
<style>
body { font-family: 'Inter', sans-serif; background-color: #F8FAFC; color: #16082B; }
h1, h2, h3, h4, h5, .font-display { font-family: 'Rajdhani', sans-serif; }
.chart-container {
position: relative;
width: 100%;
max-width: 900px;
margin-left: auto;
margin-right: auto;
height: 50vh;
min-height: 350px;
max-height: 450px;
background: white;
border-radius: 1.5rem;
padding: 1.5rem;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
border: 1px solid #f3f4f6;
}
.glass-nav {
background: rgba(248, 250, 252, 0.85);
backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(229, 231, 235, 0.5);
}
.synthesis-card {
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.synthesis-card:hover {
transform: translateY(-8px);
box-shadow: 0 12px 24px -8px rgba(22, 8, 43, 0.1);
}
.stack-item {
transition: all 0.3s ease;
cursor: pointer;
}
.stack-item:hover {
background-color: #F3E8FF;
border-left-color: #B533FF;
transform: translateX(6px);
}
/* Soften the scrollbar for a cleaner look */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #F8FAFC; }
::-webkit-scrollbar-thumb { background: #D1D5DB; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #9CA3AF; }
</style>
<link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-raster-32.png">
<link rel="icon" type="image/png" sizes="192x192" href="assets/favicon-raster-192.png">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-raster-180.png">
</head>
<body class="antialiased selection:bg-p-neon selection:text-white">
<!-- Navigation -->
<nav class="fixed w-full z-50 glass-nav">
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-20 items-center">
<div class="flex-shrink-0 flex items-center font-display font-bold text-3xl tracking-wider text-p-dark cursor-pointer" onclick="window.scrollTo(0,0)">
<span class="text-p-neon mr-2 text-4xl">∞</span> P4A
</div>
<div class="hidden md:flex space-x-10 font-display font-semibold tracking-wide text-sm text-gray-600">
<a href="#synthesis" class="hover:text-p-neon transition-colors duration-200">THE SYNTHESIS</a>
<a href="#surges" class="hover:text-p-neon transition-colors duration-200">CIVIC SURGES</a>
<a href="#foundation" class="hover:text-p-neon transition-colors duration-200">FOUNDATION</a>
<a href="#stewardship" class="hover:text-p-neon transition-colors duration-200">STEWARDSHIP</a>
</div>
</div>
</div>
</nav>
<!-- Welcome / Hero Section -->
<main class="pt-36 pb-20 max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 space-y-36">
<section class="text-center space-y-8 max-w-4xl mx-auto">
<div class="inline-flex items-center space-x-3 bg-white text-p-dark px-6 py-2.5 rounded-full font-display font-bold text-xs tracking-widest border border-gray-200 shadow-sm">
<span class="text-p-neon text-lg">✦</span>
<span>A SINCERE INVITATION</span>
</div>
<h1 class="font-display text-5xl md:text-7xl font-bold text-p-dark leading-tight tracking-tight">
Joyful. Responsible. <br/><span class="text-p-neon">Abundance.</span>
</h1>
<p class="text-xl text-gray-600 leading-relaxed font-light">
We are stewarding a gentle but profound evolutionary leap for Australian governance. Moving past the noise and adversarial politics of the past, we are building a resilient, beautiful, and highly functional Protopian future. Less splash, more class.
</p>
</section>
<!-- Section 1: The Purple Synthesis -->
<section id="synthesis" class="scroll-mt-32">
<div class="text-center mb-16">
<h2 class="font-display text-4xl font-bold text-p-dark mb-5">The Purple Synthesis</h2>
<p class="text-lg text-gray-600 max-w-3xl mx-auto font-light leading-relaxed">
We do not discard the past; we gather its most enduring strengths. By intertwining the foundations of Blue and Red traditions, we create a unified, generative Purple future that serves everyone.
</p>
</div>
<div class="flex flex-col md:flex-row items-stretch justify-center gap-6">
<!-- Blue Pillar -->
<div class="synthesis-card bg-white border border-gray-100 rounded-3xl p-10 w-full md:w-1/3 text-center shadow-sm relative overflow-hidden group">
<div class="absolute top-0 left-0 w-full h-1.5 bg-p-blue opacity-80"></div>
<div class="text-p-blue text-6xl mb-6 font-display font-bold tracking-tighter group-hover:scale-105 transition-transform">BLUE</div>
<p class="text-sm text-gray-600 leading-relaxed">
Honouring the tradition of enterprise, market efficiency, individual liberty, and the economic stability required to build our future.
</p>
</div>
<div class="flex items-center justify-center text-4xl text-gray-200 font-light hidden md:flex">+</div>
<!-- Red Pillar -->
<div class="synthesis-card bg-white border border-gray-100 rounded-3xl p-10 w-full md:w-1/3 text-center shadow-sm relative overflow-hidden group">
<div class="absolute top-0 left-0 w-full h-1.5 bg-p-red opacity-80"></div>
<div class="text-p-red text-6xl mb-6 font-display font-bold tracking-tighter group-hover:scale-105 transition-transform">RED</div>
<p class="text-sm text-gray-600 leading-relaxed">
Honouring the tradition of labour rights, deep social care, community solidarity, and robust public infrastructure.
</p>
</div>
<div class="flex items-center justify-center text-4xl text-gray-200 font-light hidden md:flex">=</div>
<!-- Purple Pillar -->
<div class="synthesis-card bg-p-dark rounded-3xl p-10 w-full md:w-1/3 text-center shadow-xl relative overflow-hidden group ring-1 ring-p-neon/30">
<div class="absolute inset-0 bg-gradient-to-br from-p-neon/20 to-transparent opacity-50"></div>
<div class="text-p-neon text-6xl mb-6 font-display font-bold tracking-tighter relative z-10 group-hover:scale-105 transition-transform">PURPLE</div>
<p class="text-sm text-p-light leading-relaxed relative z-10">
Joyful abundance, regenerative community assets, and advanced open-source stewardship. Brilliant enterprise funding deep social care.
</p>
</div>
</div>
</section>
<!-- Section 2: Civic Surges -->
<section id="surges" class="scroll-mt-32">
<div class="mb-14 text-center">
<h2 class="font-display text-4xl font-bold text-p-dark mb-5">The Rhythm of Democracy</h2>
<p class="text-lg text-gray-600 max-w-4xl mx-auto font-light leading-relaxed">
Gamified democracy respects your time and energy. It is not an exhausting, continuous demand. It is built on a natural, seasonal rhythm of participation called <strong>Civic Surges</strong>. We gather to solve challenges, we upgrade our systems, and then we rest.
</p>
</div>
<!-- Descriptive Cards First for Context -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-8 mb-12">
<div class="bg-white p-8 rounded-3xl border border-gray-100 shadow-sm hover:border-p-neon/50 transition-colors">
<div class="flex items-center space-x-4 mb-4">
<div class="w-12 h-12 rounded-full bg-p-light flex items-center justify-center text-2xl text-p-neon">🌊</div>
<h3 class="font-display font-bold text-2xl text-p-dark">Major Surges</h3>
</div>
<p class="text-gray-600 leading-relaxed text-sm mb-4">
Massive, highly-coordinated events where the entire community focuses its intelligence.
</p>
<ul class="space-y-3 text-sm text-gray-700">
<li class="flex items-start">
<span class="text-p-neon mr-2 font-bold">›</span>
<span><strong>The March Surge:</strong> Our most important annual event. We formulate a comprehensive "Shadow Budget" in March, giving us a full month to shape the Federal Budget in May.</span>
</li>
<li class="flex items-start">
<span class="text-p-neon mr-2 font-bold">›</span>
<span><strong>Election Campaigns:</strong> Surges activated during federal or state election cycles to mobilise the Cyber Republic.</span>
</li>
</ul>
</div>
<div class="bg-white p-8 rounded-3xl border border-gray-100 shadow-sm hover:border-p-emerald/50 transition-colors">
<div class="flex items-center space-x-4 mb-4">
<div class="w-12 h-12 rounded-full bg-green-50 flex items-center justify-center text-2xl text-p-emerald">💧</div>
<h3 class="font-display font-bold text-2xl text-p-dark">Minor Surges</h3>
</div>
<p class="text-gray-600 leading-relaxed text-sm mb-4">
The gentle, ongoing pulse of local stewardship. The exact timing is entirely up to you.
</p>
<ul class="space-y-3 text-sm text-gray-700">
<li class="flex items-start">
<span class="text-p-emerald mr-2 font-bold">›</span>
<span><strong>Community Voted Cadence:</strong> Your local area decides the rhythm. It could be one week a month, two dedicated weekends, or aligned with school and public holidays.</span>
</li>
<li class="flex items-start">
<span class="text-p-emerald mr-2 font-bold">›</span>
<span><strong>Fractional Participation:</strong> You only vote on the local issues you care about, preventing burnout while maintaining community care.</span>
</li>
</ul>
</div>
</div>
<!-- Chart Container -->
<div class="chart-container">
<canvas id="surgeChart"></canvas>
</div>
<p class="text-center text-sm text-gray-500 mt-4 italic">
A visualisation of a healthy democratic pulse: focused surges of activity followed by essential periods of rest and system integration.
</p>
</section>
<!-- Section 3: The Foundation (Architecture) -->
<section id="foundation" class="scroll-mt-32">
<div class="mb-14">
<h2 class="font-display text-4xl font-bold text-p-dark mb-5">A Decentralised Foundation</h2>
<p class="text-lg text-gray-600 max-w-3xl font-light leading-relaxed">
We are replacing brittle, closed-door bureaucracy with open-source stewardship. This secure technical foundation ensures that community data and decision-making power remain safely in the hands of the people.
</p>
</div>
<div class="grid grid-cols-1 lg:grid-cols-12 gap-10 items-stretch">
<!-- Interactive List -->
<div class="lg:col-span-5 space-y-3">
<div class="stack-item bg-white p-6 rounded-2xl border-l-4 border-gray-200 shadow-sm flex items-center justify-between" onclick="updateStackDetail('spec')">
<div>
<h4 class="font-display font-bold text-xl text-p-dark mb-1">Policy as Code</h4>
<p class="text-xs text-gray-500 uppercase tracking-widest font-semibold">Open Repositories</p>
</div>
<div class="text-gray-300 font-display text-2xl">›</div>
</div>
<div class="stack-item bg-white p-6 rounded-2xl border-l-4 border-gray-200 shadow-sm flex items-center justify-between" onclick="updateStackDetail('civic')">
<div>
<h4 class="font-display font-bold text-xl text-p-dark mb-1">Fractional Governance</h4>
<p class="text-xs text-gray-500 uppercase tracking-widest font-semibold">L0 to L3 Voting</p>
</div>
<div class="text-gray-300 font-display text-2xl">›</div>
</div>
<div class="stack-item bg-white p-6 rounded-2xl border-l-4 border-gray-200 shadow-sm flex items-center justify-between" onclick="updateStackDetail('data')">
<div>
<h4 class="font-display font-bold text-xl text-p-dark mb-1">The Sovereignty Stack</h4>
<p class="text-xs text-gray-500 uppercase tracking-widest font-semibold">Data Protection</p>
</div>
<div class="text-gray-300 font-display text-2xl">›</div>
</div>
</div>
<!-- Dynamic Content Display -->
<div id="stack-detail" class="lg:col-span-7 bg-white p-10 rounded-3xl border border-gray-100 shadow-sm flex flex-col justify-center min-h-[300px] transition-opacity duration-300">
<div class="text-center text-gray-400 font-light text-lg">
Select a layer from the foundation list to view how we protect and empower your voice.
</div>
</div>
</div>
</section>
<!-- Section 4: Stewardship & Policies -->
<section id="stewardship" class="scroll-mt-32">
<div class="mb-14 text-center">
<h2 class="font-display text-4xl font-bold text-p-dark mb-5">Practical Stewardship</h2>
<p class="text-lg text-gray-600 max-w-2xl mx-auto font-light leading-relaxed">
A look at the grounded policies designed to cultivate local resilience, protect our ecology, and unlock the value already present within our communities.
</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
<div class="bg-white border border-gray-100 rounded-3xl p-10 hover:shadow-md transition-shadow">
<div class="text-4xl mb-6 text-p-emerald">🌿</div>
<h3 class="font-display font-bold text-2xl mb-4 text-p-dark">The Braided Economy</h3>
<p class="text-gray-600 leading-relaxed text-sm font-light">
We aim to value the foundational work that traditional economics ignores. By introducing the Community-Hour (C-Hour), we can unlock and reward the immense value found in civic care, local agriculture, and ecological restoration.
</p>
</div>
<div class="bg-white border border-gray-100 rounded-3xl p-10 hover:shadow-md transition-shadow">
<div class="text-4xl mb-6 text-p-neon">⚖️</div>
<h3 class="font-display font-bold text-2xl mb-4 text-p-dark">Ethical Overcompliance</h3>
<p class="text-gray-600 leading-relaxed text-sm font-light">
We hold ourselves to a standard of truth that legacy politics cannot match. Inspired by the Welsh Senedd model, we are adopting strict anti-lying paradigms and open Automated Decision Making (ADM) logs to guarantee absolute transparency.
</p>
</div>
<div class="bg-white border border-gray-100 rounded-3xl p-10 hover:shadow-md transition-shadow md:col-span-2 flex flex-col md:flex-row items-center gap-10">
<div class="text-6xl opacity-80">🏛️</div>
<div>
<h3 class="font-display font-bold text-2xl mb-4 text-p-dark">Geophysical Security & Local Resilience</h3>
<p class="text-gray-600 leading-relaxed text-sm font-light">
Preparing our home for systemic changes. We are focused on securing local material supply lines and resilient community infrastructure. We want to ensure that all our communities, from major metropolitan hubs to regional coastal areas like Redcliffe and Amity Point, remain safe, connected, and prosperous regardless of global turbulence.
</p>
</div>
</div>
</div>
</section>
</main>
<footer class="bg-p-dark text-white py-20 border-t-[8px] border-p-neon">
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-col items-center text-center">
<div class="text-p-neon text-5xl mb-8 font-light tracking-tighter">∞</div>
<h2 class="font-display text-3xl font-bold mb-4 tracking-widest text-white">P4A</h2>
<p class="text-p-light/80 text-sm mb-10 font-semibold tracking-widest">JOYFUL. RESPONSIBLE. ABUNDANCE.</p>
<div class="text-xs text-gray-400 font-sans max-w-md leading-relaxed">
An invitation to build a better Australian future. Less splash, more class.
</div>
</div>
</footer>
<!-- Application Logic -->
<script>
// --- Civic Surge Chart Logic ---
document.addEventListener('DOMContentLoaded', function() {
const canvas = document.getElementById('surgeChart');
if (!canvas) return;
const ctx = canvas.getContext('2d');
// Simulating a standard year based on the community rhythm.
// High peak in March (Major Surge for Shadow Budget)
// High peak in November (Simulated Election Campaign Major Surge)
// Smaller peaks for community-voted Minor Surges (e.g., during school/public holidays)
// Low points represent essential rest and integration.
const labels = ['Jan (Rest)', 'Feb (Rest)', 'Mar (Major: Budget)', 'Apr (Rest)', 'May (Budget Month)', 'Jun (Minor: Holidays)', 'Jul (Rest)', 'Aug (Minor Surge)', 'Sep (Rest)', 'Oct (Minor: Holidays)', 'Nov (Major: Election)', 'Dec (Rest)'];
const dataPoints = [5, 5, 95, 5, 10, 35, 5, 30, 5, 35, 90, 5];
// Create a soft gradient for the fill
const gradient = ctx.createLinearGradient(0, 0, 0, 400);
gradient.addColorStop(0, 'rgba(181, 51, 255, 0.2)');
gradient.addColorStop(1, 'rgba(181, 51, 255, 0.0)');
new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: [{
label: 'Community Participation Pulse',
data: dataPoints,
borderColor: '#B533FF',
backgroundColor: gradient,
borderWidth: 3,
pointBackgroundColor: '#ffffff',
pointBorderColor: '#B533FF',
pointBorderWidth: 2,
pointRadius: 5,
pointHoverRadius: 8,
pointHoverBackgroundColor: '#16082B',
pointHoverBorderColor: '#B533FF',
fill: true,
tension: 0.45 // Very smooth, natural wave
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
interaction: {
mode: 'index',
intersect: false,
},
plugins: {
legend: { display: false },
tooltip: {
backgroundColor: 'rgba(22, 8, 43, 0.95)',
titleFont: { family: 'Rajdhani', size: 15, weight: 'bold' },
bodyFont: { family: 'Inter', size: 13 },
padding: 16,
cornerRadius: 8,
displayColors: false,
callbacks: {
label: function(context) {
const value = context.raw;
if(value >= 90) return "MAJOR SURGE: High community focus and voting.";
if(value >= 30) return "MINOR SURGE: Community-selected local voting block.";
return "REST PERIOD: System integration and community rest.";
}
}
}
},
scales: {
y: {
beginAtZero: true,
max: 105,
grid: {
color: 'rgba(0,0,0,0.03)',
drawBorder: false
},
ticks: { display: false } // Hide numbers to emphasize the rhythm
},
x: {
grid: { display: false, drawBorder: false },
ticks: {
font: { family: 'Inter', size: 11 },
color: '#6B7280',
maxRotation: 45,
minRotation: 45
}
}
}
}
});
});
// --- Foundation Stack Logic ---
const stackData = {
spec: {
title: "Policy as Code (Open Repositories)",
icon: "📝",
desc: "Instead of back-room deals, policy drafts are hosted in public, open-source repositories online. This allows experts, university networks, and citizens to track changes, suggest amendments, and review the exact specifications of a policy in the quiet weeks before a voting surge begins."
},
civic: {
title: "Fractional Governance (L0 to L3)",
icon: "🏘️",
desc: "We use a layered voting structure based on impact. 'L0' handles deeply local neighbourhood issues, scaling all the way up to 'L3' for national decisions. This ensures you only need to vote on matters that directly affect your life or community, drastically reducing voter fatigue."
},
data: {
title: "The Sovereignty Stack",
icon: "🔐",
desc: "Your data is yours. We utilise Conflict-Free Replicated Data Types (CRDTs) and W3C Decentralised Identifiers (DIDs). In simple terms, this means your voting identity and data are protected by cryptography and not held in a vulnerable central database. It guarantees privacy while maintaining secure voting."
}
};
function updateStackDetail(layer) {
const detailBox = document.getElementById('stack-detail');
const data = stackData[layer];
// Reset list item styles
document.querySelectorAll('.stack-item').forEach(el => {
el.classList.remove('border-p-neon', 'bg-p-light');
el.classList.add('border-gray-200', 'bg-white');
});
// Apply active styles to clicked item
const currentTarget = event.currentTarget;
currentTarget.classList.remove('border-gray-200', 'bg-white');
currentTarget.classList.add('border-p-neon', 'bg-p-light');
// Update content with a smooth fade
detailBox.style.opacity = '0';
setTimeout(() => {
detailBox.innerHTML = `
<div class="h-full flex flex-col justify-center animate-fade-in">
<div class="text-5xl mb-6">${data.icon}</div>
<h3 class="font-display font-bold text-3xl text-p-dark mb-4">${data.title}</h3>
<p class="text-gray-600 text-base leading-relaxed font-light">${data.desc}</p>
</div>
`;
detailBox.style.opacity = '1';
}, 200);
}
</script>
</body>
</html>