feat: optimize event capturing and playback accuracy

This commit is contained in:
2026-02-15 18:06:50 +01:00
parent e615d88fd8
commit a136e7b4a7
38 changed files with 2847 additions and 523 deletions

View File

@@ -7,16 +7,19 @@
--font-heading: 'Inter', system-ui, sans-serif;
--font-body: 'Inter', system-ui, sans-serif;
--color-primary: #001a4d; /* Deep Blue */
--color-primary: #001a4d;
/* Deep Blue */
--color-primary-dark: #000d26;
--color-primary-light: #e6ebf5;
--color-saturated: #011dff; /* Saturated Blue Accent */
--color-saturated: #011dff;
/* Saturated Blue Accent */
--color-secondary: #003d82;
--color-secondary-light: #0056b3;
--color-accent: #82ed20; /* Sustainability Green */
--color-accent: #82ed20;
/* Sustainability Green */
--color-accent-dark: #6bc41a;
--color-accent-light: #f0f9e6;
@@ -40,76 +43,107 @@
--animate-slide-up: slide-up 0.6s ease-out;
--animate-slow-zoom: slow-zoom 20s linear infinite;
--animate-reveal: reveal 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
--animate-slight-fade-in-from-bottom: slight-fade-in-from-bottom 0.8s
cubic-bezier(0.16, 1, 0.3, 1) forwards;
--animate-slight-fade-in-from-bottom: slight-fade-in-from-bottom 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
--animate-gradient-x: gradient-x 15s ease infinite;
@keyframes gradient-x {
0%,
100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
}
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes slide-up {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slow-zoom {
from {
transform: scale(1);
}
to {
transform: scale(1.1);
}
}
@keyframes reveal {
from {
opacity: 0;
transform: translateY(20px);
filter: blur(8px);
}
to {
opacity: 1;
transform: translateY(0);
filter: blur(0);
}
}
@keyframes slight-fade-in-from-bottom {
from {
opacity: 0;
transform: translateY(10px);
filter: blur(4px);
}
to {
opacity: 1;
transform: translateY(0);
filter: blur(0);
}
}
@keyframes float {
0% {
transform: translate(0, 0) scale(1);
}
33% {
transform: translate(2%, 4%) scale(1.1);
}
66% {
transform: translate(-3%, 2%) scale(0.9);
}
100% {
transform: translate(0, 0) scale(1);
}
}
}
@layer base {
.bg-primary a,
.bg-primary-dark a {
@apply text-white/90 hover:text-white transition-colors;
}
body {
@apply text-base md:text-lg antialiased;
text-rendering: optimizeLegibility;
@@ -132,18 +166,23 @@
h1 {
@apply text-3xl md:text-5xl lg:text-6xl leading-[1.1];
}
h2 {
@apply text-2xl md:text-4xl lg:text-5xl leading-[1.2];
}
h3 {
@apply text-xl md:text-2xl lg:text-3xl leading-[1.3];
}
h4 {
@apply text-lg md:text-xl lg:text-2xl leading-[1.4];
}
h5 {
@apply text-base md:text-lg leading-[1.5];
}
h6 {
@apply text-sm md:text-base leading-[1.6];
}
@@ -202,18 +241,23 @@
.glass-panel {
@apply bg-white/80 backdrop-blur-md border border-white/20 shadow-lg;
}
.image-overlay-gradient {
@apply absolute inset-0 bg-gradient-to-t from-black/90 via-black/40 to-transparent;
}
.premium-card {
@apply bg-white rounded-3xl shadow-sm transition-all duration-500 hover:shadow-2xl hover:-translate-y-1;
}
.sticky-narrative-container {
@apply grid grid-cols-1 lg:grid-cols-12 gap-12 lg:gap-20;
}
.sticky-narrative-sidebar {
@apply lg:col-span-4 lg:sticky lg:top-32 h-fit;
}
.sticky-narrative-content {
@apply lg:col-span-8;
}
@@ -221,7 +265,8 @@
/* Custom Utilities */
@utility touch-target {
min-height: 48px; /* Increased for better touch-first feel */
min-height: 48px;
/* Increased for better touch-first feel */
min-width: 48px;
display: inline-flex;
align-items: center;
@@ -276,4 +321,4 @@
@utility content-visibility-auto {
content-visibility: auto;
contain-intrinsic-size: 1px 1000px;
}
}